- PVSM.RU - https://www.pvsm.ru -
Мне хотелось создать прекрасный объемлющий мануал Getting Start без всякой воды, но включающий основные плюшки для начинающих по системе PostgreSQL в Linux.
PostgreSQL является объектно-реляционной системой управления базами данных (ОРСУБД) на основе POSTGRES, версия 4.2 [1], разработанной в Университете Калифорнии в Беркли департаменте компьютерных наук.
PostgreSQL является open source потомком оригинального кода Berkeley. Он поддерживает большую часть стандарта SQL и предлагает множество современных функций:
Кроме того, PostgreSQL может быть расширен пользователем во многих отношениях, например, путем добавления новых
Как и все любители мейнстрима PostgreSQL мы будем конечно же собирать, а не скачивать готовые пакеты (в репозитариях Debian, например, нет последней версии). Вот здесь [7] лежит множество версий, скачивать конечно же лучше всего последнюю. На момент написания поста это версия 9.2.2
wget http://ftp.postgresql.org/pub/source/v9.2.2/postgresql-9.2.2.tar.gz
tar xzf postgresql-9.2.2.tar.gz
Теперь у нас есть директория с исходниками сей прекрасной базы данных.
По умолчанию файлы базы будут установлены в директорию /usr/local/pgsql, но эту директорию можно изменить задав
--prefix=/path/to/pgsql
перед командой ./configure
Перед сборкой можно указать компилятор С++
export CC=gcc
PostgeSQL может использовать readline [8] библиотеку, если у вас её нет и нет желания её ставить просто укажите опцию
--without-readline
Надеюсь у всех есть Autotools [9]? Тогда вперед к сборке:
cd postgresql-9.2.2
./configure --without-readline
sudo make install clean
Все господа! Поздравляю!
Нам необходимо указать хранилище данных наших баз данных (кластер) и запустить её.
Есть один нюанс — владельцем директории данных и пользователь, который может запускать базу должен быть не root. Это сделано в целях безопасности системы. Поэтому создадим специального пользователя
sudo useradd postgres -p postgres -U -m
И далее все понятно
sudo chown -R postgres:postgres /usr/local/pgsql
Важный процесс. Мы должны инициализировать кластер баз дынных. Сделать мы должны это от имени пользователя postgres
initdb -D /usr/local/pgsql/data
Теперь нужно добавить запуск PostgreSQL в автостарт. Для этого существует уже готовый скрипт и лежит он в postgresql-9.2.2/contrib/start-scripts/linux
Этот файл можно открыть и обратить внимание на следующие переменные:
Если все стоит верно, то добвляем наш скрипт в init.d
sudo cp ./postgresql-9.2.2/contrib/start-scripts/linux /etc/init.d/postgres
sudo update-rc.d postgres defaults
Перезапускам систему, чтобы проверить что наш скрипт работает.
Вводим
/usr/local/pgsql/bin/psql -U postgres
И если появится окно работы с базой, то настройка прошла успешно! Поздравляю!
По умолчанию создается база данных с именем postgres
Теперь важно поговорить о методах авторизации.
В /usr/local/pgsql/data/pg_hba.conf как раз есть необходимые для этого настройка
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
Первая строка отвечает за локальное соединение, вторая — за соединение про протоколу IPv4, а третья по протоколу IPv6.
Самый последний параметр — это как раз таки метод авторизации. Его и рассмотрим (только основные)
Вкратце расскажу об основных утилитах, которые пригодятся в работе.
Возвращает информацию о текущей установленной версии PostgreSQL.
Инициализирует новое хранилище данных (кластер баз данных). Кластер представляет собой совокупность баз данных управляемых одним экземпляром севера. initdb должен быть запущен от имени будущего владельца сервера (как указано выше от имени postgres).
Управляет процессом работы сервера PostgreSQL. Позволяет запускать, выполнять перезапуск, останавливать работу сервера, указать лог файл и другое.
Клиент для работы с базой дынных. Позволяет выполнять SQL операции.
Создает новую базу данных. По умолчанию, база данных создается от имени пользователя, который запускает команду. Однако, чтобы задать другого — необходимо использовать опцию -O (если у пользователя есть необходимые привилегии для этого). По сути — это обертка SQL команды CREATE DATABASE.
Удаляет базу данных. Является оберткой SQL команды DROP DATABASE.
Добавляет нового пользователя базы дынных. Является оберткой SQL команды CREATE ROLE.
Удаляет пользователя базы данных. Является оберткой SQL команды DROP ROLE.
Добавляет новый язык программирования в базу PostgreSQL. Является оберткой SQL команды CREATE LANGUAGE.
Удаляет язык программирования. Является оберткой SQL команды DROP LANGUAGE.
Создает бэкап (дамп) базы данных в файл.
Восстанавливает бэкап (дамп) базы данных из файла.
Создает бэкап (дамп) всего кластера в файл.
Производит переиндексацию базы данных. Является оберткой SQL команды REINDEX.
Производит перекластеризацию таблиц в базе данных. Является оберткой SQL команды CLUSTER.
Сборщик мусора и оптимизатор базы данных. Является оберткой SQL команды VACUUM.
Что касается менеджера по работа с базой, то есть php менеджер — это phpPgAdmin [10]и GUI менеджер pgAdmin [11]. Должен заметить, что они оба плохо поддерживают последнюю версию PostgreSQL.
P.S Если что-то забыл, скажите — добавлю.
Автор: IBobko
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/26950
Ссылки в тексте:
[1] POSTGRES, версия 4.2: http://db.cs.berkeley.edu/postgres.html
[2] Внешние ключи: http://ru.wikipedia.org/wiki/%D0%92%D0%BD%D0%B5%D1%88%D0%BD%D0%B8%D0%B9_%D0%BA%D0%BB%D1%8E%D1%87
[3] Триггеры: http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B8%D0%B3%D0%B3%D0%B5%D1%80_(%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)
[4] Представление : http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_(%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)
[5] Транзакционная целостность (transactional integrity): http://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B0%D0%BD%D0%B7%D0%B0%D0%BA%D1%86%D0%B8%D1%8F_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)
[6] Управление конкурентным доступом с помощью многоверсионности: http://ru.wikipedia.org/wiki/MVCC
[7] здесь: http://www.postgresql.org/ftp/source/
[8] readline: http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html
[9] Autotools: http://ru.wikipedia.org/wiki/Autotools
[10] phpPgAdmin : http://phppgadmin.sourceforge.net/doku.php
[11] pgAdmin: http://www.pgadmin.org/
[12] Источник: http://habrahabr.ru/post/168601/
Нажмите здесь для печати.