Для начала, добавить репозитории Postgresql версий 9.5\9.6:
Для Centos 6:
Postgresql 9.6
rpm -Uvh https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/pgdg-centos96-9.6-3.noarch.rpm
Postgresql 9.5
rpm -Uvh https://yum.postgresql.org/9.5/redhat/rhel-6-x86_64/pgdg-centos95-9.5-3.noarch.rpm
Для Centos 7:
Postgresql 9.6
rpm -Uvh https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
Postgresql 9.5
rpm -Uvh https://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-3.noarch.rpm
Установить компоненты СУБД:
Postgresql 9.6
yum install -y postgresql96 postgresql96-server postgresql96-libs postgresql96-contrib postgresql96-devel
Postgresql 9.5
yum install -y postgresql95 postgresql95-server postgresql95-libs postgresql95-contrib postgresql96-devel
Добавить Postgresql в список автозагрузки:
Postgresql 9.6
chkconfig postgresql-9.6 on
Postgresql 9.5
chkconfig postgresql-9.5 on
Инициализировать СУБД:
Postgresql 9.6
service postgresql-9.6 initdb
Аналогичная команда в случае если первая не сработала:
/usr/pgsql-9.6/bin/postgresql96-setup initdb
Postgresql 9.5
service postgresql-9.5 initdb
Аналогичная команда в случае если первая не сработала:
/usr/pgsql-9.5/bin/postgresql95-setup initdb
Внести изменения в конфигурационные файлы:
vim /var/lib/pgsql/9.6/data/pg_hba.conf
vim /var/lib/pgsql/9.5/data/pg_hba.conf
Привести их в виду:
local all all trust
host all all 127.0.0.1/32 trust
host all all 192.168.0.0/16 trust
host all all ::1/128 trust
Внести изменения в основной конф. Файл:
vim /var/lib/pgsql/9.6/data/postgresql.conf
vim /var/lib/pgsql/9.5/data/postgresql.conf
Принимать подключения со всех IP адресов:
listen_addresses = '*'
port = 5432
Запустить Postgresql:
/etc/init.d/postgresql-9.6 start
/etc/init.d/postgresql-9.5 start
ИЛИ
service postgresql-9.6 start
service postgresql-9.5 start
Создание БД в кодировке UTF-8:
Из терминала Linux (все пишется в одну строку):
createdb -e -U postgres bd_name -E UTF8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8 -T template0;
Из консоли Postgresql:
psql -U postgres
CREATE DATABASE bd_name WITH ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0;
Проверяем созданные БД: postgres=# \l+
Выход из консоли Postgresql: postgres=# \q
Создание ролей :
echo "create role name_role with login createdb" | psql -U postgres;
Удаление баз данных Postgresql:
Из терминала Linux
dropdb db_name;
Из консоли Postgres:
drop database db_name;
Переименование БД:
alter database test rename to test1;
Создание резервной копии БД Postgresql:
pg_dump -U postgres -v -Ft db_name | gzip -9 >> db_name-$(date +%d.%m.%Y).tar.gz
Восстановим базы из директорий:
pg_restore -U postgres -d db_name -F d /путь/до/распакованного_дампа
Возможные проблемы при удалении базы:
postgres=# DROP DATABASE db_name;
ERROR: database «db_name» is being accessed by other users
DETAIL: There is 1 other session using the database.
Решение (все пишется в одну строку):
select pg_terminate_backend (pg_stat_activity.pid) from pg_stat_activity where pg_stat_activity.datname = 'db_name';
Список сессий:
SELECT * from pg_stat_activity;