How-to`s — Установка PostgreSQL на Ubuntu 8.04
Оригинал
Эта статья описывает установку сервера баз данных PostgreSQL и программу администрирования PgAdmin в Ubuntu Linux, а также настройку сервера для работы в сети.
Перед тем, как мы начнём, замечание: это хау-ту тестировалось с текущим релизом Ubuntu Linux (8.04 - Hardy Heron) и PostgreSQL 8.3, но оно также должно быть применимо для более старых версий (Ubuntu и PostgreSQL) и других Debian-based дистрибутивов.
Для базовой установки в командной строке введите следующие команды (или найдите перечисленные пакеты в синаптике, если вы предпочитаете работать с ним):
(Прим. переводчика: можно написать короче:
)
Эти команды установят сервер и клиент БД, некоторые дополнительные скрипты и графическую утилиту pgAdmin для работы с БД.
Теперь нам необходимо переустановить пароль админского аккаунта ‘postgres’ сервера, чтобы мы могли использовать его для задач системного администрирования. Введите в командной строке (подставьте вместо password пароль, который вы хотите использовать):
(Прим. переводчика: также можно создать пользователя, имя которого совпадает с вашим логином в линуксе, тогда можно будет запускать клиент так:
)
Эти команды изменяют пароль внутри БД, теперь нам необходимо сделать тоже самое с unix пользователем ‘postgres’:
Введите тот же пароль, который вы использовали в прошлый раз.
Теперь мы можем использовать и программу pgAdmin, и консольный клиент (от пользователя postgres), чтобы работать с сервером БД. Но, перед запуском pgAdmin, мы должны установить админский пакет PostgreSQL, который включит лучшее логгирование и мониторинг в pgAdmin. Запустите следующую команду:
Наконец, нам необходимо настроить сервер для работы в сети, иначе он будет доступен только с локальной машины. Чтобы сделать это, сначала необходимо отредактировать файл 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 адреса и маски подсетей. Но это не исключает необходимости знать, как это работает.)
Закомментируйте или удалите текущее содержимое файла, потом вставьте следующий текст в конец файла:
и в последней строке добавьте вашу маску подсети (например, 255.255.255.0) и IP адрес машины, которой нужен доступ к вашему серверу (например, 138.250.192.115). Если вам необходимо дать доступ диапазону IP адресов, подставьте вместо последнего числа 0 (например, 138.250.192.0 даст доступ к серверу всем машинам с IP адресами 138.250.192.x).
Всё, теперь перезапустите сервер:
И всё должно работать.
Эта статья описывает установку сервера баз данных PostgreSQL и программу администрирования PgAdmin в Ubuntu Linux, а также настройку сервера для работы в сети.
Перед тем, как мы начнём, замечание: это хау-ту тестировалось с текущим релизом Ubuntu Linux (8.04 - Hardy Heron) и PostgreSQL 8.3, но оно также должно быть применимо для более старых версий (Ubuntu и PostgreSQL) и других Debian-based дистрибутивов.
Для базовой установки в командной строке введите следующие команды (или найдите перечисленные пакеты в синаптике, если вы предпочитаете работать с ним):
1 2 3 |
$ sudo apt-get install postgresql postgresql-client postgresql-contrib |
(Прим. переводчика: можно написать короче:
$ sudo aptitude install postgresql{,-client,-contrib} pgadmin3
Эти команды установят сервер и клиент БД, некоторые дополнительные скрипты и графическую утилиту pgAdmin для работы с БД.
Теперь нам необходимо переустановить пароль админского аккаунта ‘postgres’ сервера, чтобы мы могли использовать его для задач системного администрирования. Введите в командной строке (подставьте вместо password пароль, который вы хотите использовать):
$ sudo su postgres -c psql template1
1 2 3 4 5 |
template1=# ALTER USER postgres WITH PASSWORD 'password'; |
(Прим. переводчика: также можно создать пользователя, имя которого совпадает с вашим логином в линуксе, тогда можно будет запускать клиент так:
$ psql имя_бд
)
Эти команды изменяют пароль внутри БД, теперь нам необходимо сделать тоже самое с unix пользователем ‘postgres’:
1 2 3 |
$ sudo passwd -d postgres |
Введите тот же пароль, который вы использовали в прошлый раз.
Теперь мы можем использовать и программу 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’…
Замените строку:
#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
# Если вы измените эту первую запись, вам необходимо убедиться, что
# админ БД сможет получить доступ другим способом.
# Неинтерактивный доступ ко всем базам данных необходим для
# автоматического обслуживания
# (автовакуум, дневные задачи 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
И всё должно работать.