Наша статья описывает установку сервера баз данных PostgreSQL в Ubuntu а также настройку сервера для работы в сети.

Пример создан и проверен на платформе Ubuntu Server 10.04 x64 и PostgreSQL 9.0, но оно также должно быть применимо для более старых версий (Ubuntu и PostgreSQL) и других Debian-based дистрибутивов. Пример проверен на Ubuntu 10.10, где все работало превосходно и Ubuntu 11.04, где наблюдались проблемы с коннектом к БД с localhost.

Настоятельно рекомендую использовать PostgreSQL 9.0 (подробнее о том, как установить postgreSQL 9.0 на Ubuntu). Для этого надо подключить источники обновлений, указанные в статье. Возможно, на текущий момент PostgreSQL 9 уже включена в Ubuntu по умолчанию.

Для базовой установки в командной строке введите следующие команды (или найдите перечисленные пакеты в синаптике, если вы предпочитаете работать с ним):

$ sudo apt-get install postgresql postgresql-client postgresql-contrib

Эти команды установят сервер и клиент БД, некоторые дополнительные скрипты.

Теперь нам необходимо переустановить пароль админского аккаунта ‘postgres’ сервера, чтобы мы могли использовать его для задач системного администрирования. Введите в командной строке (подставьте вместо password пароль, который вы хотите использовать):
 

$ sudo su postgres -c psql template1

template1=# ALTER USER postgres WITH PASSWORD 'password';
template1=# q


Также можно создать пользователя, имя которого совпадает с вашим логином в линуксе, тогда можно будет запускать клиент так:

$ psql имя_бд

Эти команды изменяют пароль внутри БД, теперь нам необходимо сделать тоже самое с unix пользователем ‘postgres’:

 

$ sudo passwd -d postgres
$ sudo su postgres -c passwd

$> введите пароль

Введите тот же пароль, который вы использовали в прошлый раз.
 

Теперь мы можем использовать консольный клиент (от пользователя postgres), чтобы работать с сервером БД. Но, перед запуском pgAdmin, мы должны установить админский пакет PostgreSQL, который включит лучшее логгирование и мониторинг в pgAdmin. Запустите следующую команду:

$ sudo su postgres -c psql < /usr/share/postgresql/9.0/contrib/adminpack.sql


Наконец, нам необходимо настроить сервер для работы в сети, иначе он будет доступен только с локальной машины. Чтобы сделать это, сначала необходимо отредактировать файл postgresql.conf:

$ sudo mcedit /etc/postgresql/9.0/main/postgresql.conf

Теперь измените строки в секции ‘Connections and Authentication’…
Замените строку:
#listen_addresses = 'localhost'

на
listen_addresses = '*'

и, также, замените строку
#password_encryption = on

на
password_encryption = on

Сохраните файл и закройте gedit.
Последний шаг -- мы должны определить, кто должен иметь доступ к серверу. Это настраивается с помощью файла pg_hba.conf file. (Этот шаг можно также сделать с помощью последних версий pgAdmin (1.6.x), плюс вам даже нет необходимости вычислять IP адреса и маски подсетей. Но это не исключает необходимости знать, как это работает.)
 

$ sudo mcedit /etc/postgresql/9.0/main/pg_hba.conf

Закомментируйте или удалите текущее содержимое файла, потом вставьте следующий текст в конец файла:


 

# НЕ ИЗМЕНЯЙТЕ ПЕРВУЮ ЗАПИСЬ!
# Если вы измените эту первую запись, вам необходимо убедиться, что
# админ БД сможет получить доступ другим способом.
# Неинтерактивный доступ ко всем базам данных необходим для
# автоматического обслуживания
# (автовакуум, дневные задачи cron, репликация и подобные задачи).
#
# Административный вход с помощью сокетов UNIX
local all postgres ident sameuser
# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" - только для соединений через сокеты Unix
local all all md5
# IPv4 локальные соединения:
host all all 127.0.0.1/32 md5
# IPv6 локальные соединения:
host all all ::1/128 md5

# Связь для все ПК в подсети
#
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all [ip адрес] [маска подсети] md5


и в последней строке добавьте вашу маску подсети (например, 255.255.255.0) и IP адрес машины, которой нужен доступ к вашему серверу (например, 192.168.1.15). Если вам необходимо дать доступ диапазону IP адресов, подставьте вместо последнего числа 0 (например, 138.250.192.0 даст доступ к серверу всем машинам с IP адресами 138.250.192.x).

Всё, теперь перезапустите сервер:
 

$ sudo /etc/init.d/postgresql-9.0 restart
или просто
$ sudo /etc/init.d/postgresql restart


И всё должно работать.

После того, как установка завершена, рекомендую оптимизировать параметры Postgres. Удобный сервис конфигурации Postgres находится тут: http://pgtune.leopard.in.ua/