PostgreSQL — объектно-реляционная система управления базами данных, доступная для работы на различных операционных системах. В данной инструкции мы установим PostgreSQL-сервер на виртуальную машину с ОС семейства Unix.
CentOS/Fedora/RedHat
- Находим ссылку на RPM-файл нужной версии PostgreSQL для ОС на официальном сайте
- Подключаем репозиторий:
yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
- Устанавливаем PostgreSQL-пакеты вместе с phpPgAdmin:
yum install postgresql postgresql-server postgresql-contrib
- Инициализируем базы данных кластера:
service postgresql initdb
- Запускаем сервер базы данных:
service postgresql start
Ubuntu/Debian
- Выполняем установку пакетов для PostgreSQL:
apt-get install postgresql postgresql-contrib
- Перезапускаем сервис базы данных:
service postgresql restart
Однако в PPA разработчиков PostgreSQL можно найти актуальную версию. Для этого добавьте репозиторий PostgreSQL в системный список источников и добавьте для него ключ:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list' wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
Это позволит при обновлении пакетов получать наиболее актуальные версии.
Установка из исходного кода
Также имеется возможность установить PostegreSQL нужной версии из исходного кода. Для этого достаточно воспользоваться инструкцией, выгрузив перед этим требуемую версию с официального сайта.
Установка phpPgAdmin
Debian/Ubuntu
- Устанавливаем пакет:
$ apt-get install phppgadmin
- Разрешаем внешний доступ в файле
/etc/apache2/conf-available/phppgadmin.conf
, снимая комментирования со строки#Require all granted
- Чтобы указать конкретный IP-адрес, нужно использовать:
Require ip X.X.X.X.
где X.X.X.X. — ваш IP-адрес
- Можно отключить дополнительную защиту при авторизации в файле
/etc/phppgadmin/config.inc.php
$conf['extra_login_security']=false
- Для применения изменений перезагружаем веб-сервер:
service httpd restart
CentOS
- Устанавливаем репозиторий EPEL:
yum install epel-release
- Обновляем менеджер пакетов:
$ yum update
- Устанавливаем phpPgAdmin:
$ yum -y install phpPgAdmin
- Разрешаем внешний доступ в файле
/etc/httpd/conf.d/phpPgAdmin.conf
, снимая комментирования со строки#Require all granted
- Чтобы указать конкретный IP-адрес, нужно использовать
Require ip X.X.X.X.
- Чтобы указать конкретный IP-адрес, нужно использовать
где X.X.X.X. — ваш IP-адрес
- Можно отключить дополнительную защиту при авторизации в файле
/etc/phppgadmin/config.inc.php
- Перезагружаем веб-сервер:
service httpd restart
Vesta
Помимо установки согласно инструкции для ОС, нужно выполнить дополнительные действия для интеграции с панелью.
- Включаем поддержку баз данных PgSQL в Vesta:
$ open /usr/local/vesta/conf/vesta.conf and set DB_SYSTEM to 'mysql,pgsql'
- Регистрируем экземпляр pg в панели управления:
$ v-add-database-host pgsql localhost postgres pgp4sw0rd
- Выгружаем phpPgAdmin нужной конфигурации:
- CentOS
$ wget http://c.vestacp.com/0.9.8/rhel/pga.conf -O /etc/phpPgAdmin/config.inc.php $ wget http://c.vestacp.com/0.9.8/rhel/httpd-pga.conf -O /etc/httpd/conf.d/phpPgAdmin.conf
- Debian
$ wget http://c.vestacp.com/0.9.8/debian/pg_hba.conf -O /etc/postgresql/*/main/pg_hba.conf
- CentOS
- Перезагружаем веб-сервер:
$ service httpd restart
- Устанавливаем пользовательский пароль:
$ su - postgres $ psql -c "ALTER USER postgres WITH PASSWORD 'pgp4sw0rd'" $ exit
Изменение версии
Перед работами обязательно сохранить бекап, так как параметры версий могут быть несовместимы.
ISPManager
- Для изменения основной версии PostgreSQL необходимо воспользоваться инструкцией
На операционных системах без установленной панели управления
- Вначале необходимо установить новую версию PostgreSQL, руководствуясь инструкцией из пункта «Установка PostgreSQL»
- Если установка происходит из исходного кода, то необходимо производить её в другой каталог, изменив стандартный порт (его значение 5432) с помощью дополнительных ключей --with-pgport=НОМЕР и --prefix=ПРЕФИКС
- Запустив параллельно оба сервера, старый и новый, с разными портами, можно будет перенести данные с помощью следующей команды
pg_dumpall -p 5432 | psql -d postgres -p 5433
Сброс пароля суперпользователя
- Первым делом необходимо найти файл pg_hba.conf любой доступной утилитой.
- Создаем резервную копию данного файла:
cp pg_hba.conf pg_hba.conf-backup
- Указываем в файле pg_hba.conf следующую строку:
local all all trust
- Перезагружаем PostgreSQL:
sudo /etc/init.d/postgresql restart
Если у сервер не перезагружается, выдавая следующую ошибку: local connections are not supported by this build , то необходимо заменить строчку, начинающуюся с local на
host all all 127.0.0.1/32 trust
- Теперь доступно подключение к серверу PostgreSQL под любым пользователем:
psql -U postgres
- Задаём новый пароль для нужного пользователя:
ALTER USER user_name with password 'password';
- Восстанавливаем исходный файл pg_hba.conf:
cp pg_hba.conf-backup pg_hba.conf
- Перезагружаем сервер PostgreSQL:
sudo /etc/init.d/postgresql restart
Настройка PostgreSQL
Найти конфигурационный файл postgresql.conf
можно командой:
ps aux | grep postgres | grep -- -D
Внешнее подключение к базе данных
- В файле
postgresql.conf
изменяем значение listen_addresses- «*» для любых адресов или IP для конкретного источника
listen_addresses = '*'
- В файле
pg_hba.conf
(лежит в там же, что иpostgresql.conf
) добавляем строчку с параметрами- host - подключаемся через SSL
- all - разрешаем подключение ко всем базам
- postgreadmin - имя пользователя, которому разрешаем подключение
- 0.0.0.0/0 - маска сети с которой можно подключаться
- md5 - способ шифрования пароля
host all postgreadmin 0.0.0.0/0 md5
- Создаем пользователя postgreadmin в postgresql, через которого будет происходить подключение с помощью . Используемые опции команды createuser:
- -s - добавить пользователю права суперпользователя
- -r - разрешить пользователю создавать других пользователей
- -d - разрешает пользователю создавать базы данных
- -P - добавить к пользователю пароль
> createuser -s -r -d -P postgreadmin # ввести пароль > exit
- Перезагружаем postqresql:
$ service postgresql restart
Кодировка
Узнать кодировку
- На стороне сервера:
psql -l
- Получить текущую клиентскую кодировку:
> SHOW client_encoding;
Задать кодировку на стороне клиента
- Клиентская кодировка устанавливается SQL-командой:
> SET CLIENT_ENCODING TO 'value';
- Также можно использовать стандартный синтаксис
SQL SET NAMES
> SET NAMES 'value';
Вернуть кодировку по умолчанию
> RESET client_encoding;