Перед тем, как мы начнём, замечание: это хау-ту тестировалось с текущим
релизом Ubuntu Linux 9.04 и PostgreSQL 8.3, но оно также должно быть
применимо для более старых версий (Ubuntu и PostgreSQL) и других
Debian-based дистрибутивов.
Для базовой установки в командной строке
введите следующие команды (или найдите перечисленные пакеты в
синаптике, если вы предпочитаете работать с ним):
$ sudo apt-get install postgresql postgresql-client postgresql-contrib
$ sudo apt-get install pgadmin3
(Прим. переводчика: можно написать короче:
$ sudo aptitude install postgresql{,-client,-contrib} pgadmin3
)
Эти команды установят сервер и клиент БД, некоторые дополнительные скрипты и графическую утилиту pgAdmin для работы с БД.
Теперь необходимо переустановить пароль админского аккаунта ‘postgres’
сервера, чтобы мы могли использовать его для задач системного
администрирования. Введите в командной строке (подставьте вместо
password пароль, который вы хотите использовать):
$ sudo su postgres -c psql template1
...=# ALTER USER postgres WITH PASSWORD 'password';
...=# \q
Вместо password используешь какой-нибудь свой пароль, если всё правильно, то ответ будет ALTER ROLE.
(Прим.
переводчика: также можно создать пользователя, имя которого совпадает с
вашим логином в линуксе, тогда можно будет запускать клиент так:
$ psql имя_бд
)
Эти команды изменяют пароль внутри БД, теперь нам необходимо сделать тоже самое с unix пользователем ‘postgres’:
$ sudo passwd -d postgres
$ sudo su postgres -c passwd
Введите тот же пароль, который вы использовали в прошлый раз.
Теперь можно использовать и программу pgAdmin, и консольный клиент (от
пользователя postgres), чтобы работать с сервером БД. Но, перед
запуском pgAdmin, мы должны установить админский пакет PostgreSQL,
который включит лучшее логгирование и мониторинг в pgAdmin. Запустите
следующую команду:
$ sudo su postgres -c psql < /usr/share/postgresql/8.3/contrib/adminpack.sql
Наконец, нам необходимо настроить сервер для работы в сети, иначе он будет
доступен только с локальной машины. Чтобы сделать это, сначала
необходимо отредактировать файл postgresql.conf:
$ sudo gedit /etc/postgresql/8.3/main/postgresql.conf
Теперь измените строки в секции ‘Connections and Authentication’… pамените строку:
#listen_addresses = 'localhost'
на
listen_addresses = '*'
и, также, замените строку
#password_encryption = on
на
password_encryption = on
Сохраните файл и закройте gedit.
Последний шаг -- мы должны определить, кто должен иметь доступ к серверу. Это
настраивается с помощью файла pg_hba.conf file. (Этот шаг можно также
сделать с помощью последних версий pgAdmin (1.6.x), плюс вам даже нет
необходимости вычислять IP адреса и маски подсетей. Но это не исключает
необходимости знать, как это работает.)
$ sudo gedit /etc/postgresql/8.3/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 адрес машины, которой нужен доступ к вашему серверу
(например, 138.250.192.115). Если вам необходимо дать доступ диапазону
IP адресов, подставьте вместо последнего числа 0 (например,
138.250.192.0 даст доступ к серверу всем машинам с IP адресами
138.250.192.x).
Всё, теперь перезапустите сервер:
$ sudo /etc/init.d/postgresql-8.3 restart
И всё должно работать. |