Установка и настройка PostgreSQL в CentOS
По-умолчанию в CentOS 6.4 идет Postgresql версии 8.4. Нам не надо такую старую, поэтому первым делом нужно добавить официальный репозиторий и запретить установку старых пакетов. Все операции выполняются под root'ом.
Идем сюда и смотрим ссылку на последнюю стабильную версию для CentOS. На момент написания статьи это была версия 9.2, ссылка на пакет была такой
Скачиваем его командой wget
:
wget http://yum.postgresql.org/9.2/redhat/rhel-6-x86_64/pgdg-centos92-9.2-6.noarch.rpm
Если система выдает сообщение, что wget
- неизвестная команда, его нужно установить:
yum install wget -y
После успешной установки повторяем запрос. Итак, Файл репозитория скачался, пора его импортировать:
rpm -i pgdg-centos92-9.2-6.noarch.rpm
Теперь необходимо запретить системе устанавливать старые пакеты из стандартного репозитория. Открываем любым редактором файл /etc/yum.repos.d/CentOS-Base.repo
и добавляем в секции [base]
и [updates]
строку
exclude=postgresql*
Должно получиться примерно так (комментарии удалены):
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
exclude=postgresql*
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Теперь нужно обновить локальную копию списка пакетов:
yum update
А вот теперь можно установить сервер:
yum install postgresql92-server -y
Теперь сервер нужно настроить. Инициализируем его:
service postgresql-9.2 initdb
и добавим в автозагрузку:
chkconfig postgresql-9.2 on
Все настройки сервера хранятся в каталоге /var/lib/pgsql/9.2/data/
. Отредактируем файл pg_hba.conf
vim /var/lib/pgsql/9.2/data/pg_hba.conf
В этом файле несколько строк, которые отвечают за параметры доступа к серверу. Следует обратить внимание на строку
local all all ident
Не вдаваясь в детали скажу, что эта строка разрешает подключение локальных пользователей к серверу без ввода логина и пароля, если пользователь авторизован в системе. Пока не будем ничего менять, вернемся сюда позже. Сейчас нужно войти в систему под именем пользователя postgres:
su postgres
Запускаем оболочку psql
bash-4.1$ psql
Нас пускают без ввода пароля, выдавая окно приветствия:
psql (9.2.4)
Введите "help", чтобы получить справку.
postgres=#
Зададим пользователю postgres пароль, чтобы иметь возможность более простым способом авторизоваться в СУБД. Ввод точки с запятой в конце команды обязателен.
ALTER ROLE postgres WITH PASSWORD 'postgres';
Система ответит:
ALTER ROLE
Можно покинуть интерпретатор, для этого вводим в консоли команду
postgres=# \q
Выходим из-под пользователя postgres:
bash-4.1$ exit
Теперь внесем изменения в вышеуказанный файл pg_hba, приведя его примерно к такому виду:
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.1.2/32 md5
Первая строка разрешает подключение к СУБД для всех локальных пользователей, но при этом требует с них ввод пароля. Вторая делает практически то же самое, но мы эту строку оставим для того, чтобы подключаться к СУБД могли даже те пользователи, у кого нет системной учетной записи, а есть только роль в СУБД. Например, Вы добавили несколько баз данных и указали для них владельцев, но при этом не хотите, чтобы они имели возможность входить в систему. При этом эти люди не будут ограничены в работе со своей базой данных.
Последняя строка разрешает подключаться к любой базе любому пользователю с адреса 192.168.1.2
, требуя взамен логин и пароль. Чтобы эта настройка работала, необходимо в файле postgresql.conf
раскомментировать и изменить строку
#listen_addresses = 'localhost'
на
listen_addresses = '*'
Это заставит СУБД слушать все сетевые интерфейсы в поисках входящих подключений. Удобно (и очень опасно), если Вы хотите управлять СУБД через pgAdmin удаленно. Остальные настройки можно оставить по-умолчанию.
Перезапускаем службу:
service postgresql-9.2 restart
Если всё нормально, видим:
Останавливается служба postgresql-9.2: [ OK ]
Запускается служба postgresql-9.2: [ OK ]
Пробуем подключиться от имени пользователя postgres:
psql -U postgres
Поздравляю! Можете приступать к изучению консольных команд PostgreSQL. В самом простом случае Вам нужно будет создать пользователя СУБД и добавить для него базу данных. Запустите интерпретатор psql
:
psql -U postgres
Введите команды:
CREATE ROLE abcd WITH PASSWORD 'dcba' LOGIN;
CREATE DATABASE aabbccdd WITH OWNER abcd;
Вы только что создали пользователя abcd
с паролем dcba
, разрешили ему вход в СУБД и добавили базу данных, указав, что ее владельцем является этот новый пользователь, т. е. он имеет все необходимые привилегии для работы с этой базой. Если захотите подключиться к БД aabbccdd
от имени пользователя abcd
, введите в консоли команду psql
с вот этими ключами:
psql -U abcd -d aabbccdd
Если не указать ключ -d
и имя БД следом за ним, PostgreSQL попытается подключиться к БД с тем же названием, что и имя текущего пользователя, не найдет ее и выдаст сообщение об ошибке.
Комментариев нет :
Отправить комментарий