PostgreSQL инсталляция в Centos 6.X


Для версии 9

1. Configure your YUM repository

Для начала нужно указать в репозиториях [base] и [updates], что из-них следует исключить пакеты для postgresql:

# vi /etc/yum.repos.d/CentOS-Base.repo

Для [base] и [updates]

exclude=postgresql*

2. Install PGDG RPM file

# yum localinstall -y  http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm

3. Install PostgreSQL

# yum list postgres*
# yum install -y postgresql94-server

4. Initialize

# service postgresql-9.4 initdb

5. Startup

# chkconfig postgresql-9.4 on

6. Control service

# service postgresql-9.4 start

https://wiki.postgresql.org/wiki/YUM_Installation


Для версии 8

# yum install -y postgresql-server
# chkconfig --levels 35 postgresql on

# service postgresql initdb


Настройка конфигов (расположение зависит от выбранной версии postgresql)

Config:

# cp /var/lib/pgsql/data/postgresql.conf /var/lib/pgsql/data/postgresql.conf.backup.$(date +%Y-%m-%d)


# vi /var/lib/pgsql/data/postgresql.conf


listen_addresses = '*'
port = 5432


# cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.backup.$(date +%Y-%m-%d)


# vi /var/lib/pgsql/data/pg_hba.conf


добавляю:

host          all           all           192.168.56.0      255.255.255.0         trust

192.168.56.0 - подсеть из которой можно будет подключаться к серверу PostgreSQL


# service postgresql restart


Создание базы и пользователя

# su - postgres

$ createdb mydatabase
$ psql mydatabase

CREATE USER scott WITH PASSWORD 'tiger';

GRANT ALL PRIVILEGES ON DATABASE mydatabase to scott;

// Удалить базу (если нужно), можно командой

$ dropdb mydatabase

// Поменять владельца

ALTER DATABASE mydatabase OWNER TO scott;

// Проверка удаленного подключения

$ psql -h 192.168.1.11 -p 5432 -U user -W mydatabase

Вроде неплохая статья:
http://www.unixmen.com/postgresql-9-4-released-install-centos-7/



Импорт / Экспорт

Dump (Нужно уточнить параметры)

pg_dump -f nvdls.db -F p -U nvdladmin nvdlstats

Restore

pg_restore --verbose --clean --no-acl --no-owner -h myhost -U myuser -d mydb latest.dump

Dump Можно преобразовать в sql (Нужно уточнить параметры)

pg_restore -Fc dump.backup -f dump.sql

И импортировать как последовательность SQL команд.

$ psql database -f dump.sql


Ошибка 1:

pg_restore: [archiver] unsupported version (1.12) in file header

Проверяем:

pg_restore --version
pg_restore (PostgreSQL) 8.4.20

Нужна версия 9 и выше.

$ pg_restore --version
pg_restore (PostgreSQL) 9.4.1


Ошибка 2:

[archiver (db)] could not execute query: ERROR: language “plpgsql” does not exist

$ psql mydatabase
CREATE LANGUAGE plpgsql;

http://softlabpro.blogspot.ru/2011/05/postgresql-restore-9x-backup-in-8x.html


Ошибка 3:

ERROR: could not execute query: ERROR: must be owner of language plpgsql

$ psql paymentgate
paymentgate=# alter role <user_name> with superuser;
ALTER ROLE

Убедиться, что owner выставлен правильно.

postgres=# \l
                                   List of databases
    Name     |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-------------+----------+----------+-------------+-------------+-----------------------
 paymentgate | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres         +
             |          |          |             |             | postgres=CTc/postgres+
             |          |          |             |             | test=CTc/postgres
 postgres    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
             |          |          |             |             | postgres=CTc/postgres
 template1   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
             |          |          |             |             | postgres=CTc/postgres
(4 rows)