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 -
Это позволит при обновлении пакетов получать наиболее актуальные версии.
Установка из исходного кода
Также имеется возможность установить PostgreSQL нужной версии из исходного кода. Для этого достаточно воспользоваться инструкцией, выгрузив перед этим требуемую версию с официального сайта.
Установка 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
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.
, где 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
- Перезагружаем веб-сервер:
service httpd restart
- Устанавливаем пользовательский пароль:
su - postgres psql -c "ALTER USER postgres WITH PASSWORD 'pgp4sw0rd'" exit
Изменение версии
Перед работами обязательно сохраните бекап, так как параметры версий могут быть несовместимы.
ISPManager
На операционных системах без установленной панели управления
- Вначале необходимо установить новую версию 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
:
listen_addresses = '*'
- В файле
pg_hba.conf
(находится в том же месте, что иpostgresql.conf
) добавляем строку с параметрами:
host all postgreadmin 0.0.0.0/0 md5
- Создаем пользователя
postgreadmin
в PostgreSQL, через которого будет происходить подключение. Используемые опции командыcreateuser
:
-s
— добавить пользователю права суперпользователя-r
— разрешить пользователю создавать других пользователей-d
— разрешает пользователю создавать базы данных-P
— добавить к пользователю пароль
createuser -s -r -d -P postgreadmin # ввести пароль exit
- Перезагружаем PostgreSQL:
service postgresql restart
Кодировка
Узнать кодировку
- На стороне сервера:
psql -l
- Получить текущую клиентскую кодировку:
SHOW client_encoding;
Задать кодировку на стороне клиента
- Клиентская кодировка устанавливается SQL-командой:
SET CLIENT_ENCODING TO 'value';
- Также можно использовать стандартный синтаксис
SQL SET NAMES
:
SET NAMES 'value';
Вернуть кодировку по умолчанию
RESET client_encoding;