PostgreSQL. AlmaLinux 8. PostgreSQL 13. Install
Установка
Идём на http://yum.postgresql.org/repopackages.php, ищем ссылку на самую последнюю версию репозитория. Например, https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo dnf -qy module disable postgresql
sudo dnf -y update
sudo dnf -y install postgresql13 postgresql13-server
Далее мы должны инициализировать кластер БД.
Кластер БД - это набор баз данных, который управляется одним экземпляром запущенного сервера БД. После инициализации, кластер БД будет содержать БД с именем postgres, которая является БД по умолчанию, которую используют утилиты, пользователи и сторонние приложения. Сам сервер БД не нуждается в этой БД, но многие внешние приложения подразумевают, что она существует. Другая БД, создаваемая на этапе инициализации, называется template1. Как и следует из её имени, она будет использоваться как шаблон для создаваемых БД; она не должна использоваться для работы.
Столкнулся с тем, что СУБД ставится с кодировкой Encoding="SQL_ASCII", Collate="C", Ctype="С".
Чтобы установить и инициализировать БД изначально
Установите пакет
yum install postgresql13-server
Далее нужно зайти под пользователя postgres
su - postgres
И выполнить инициализацию указав соответствующие кодировки
/usr/pgsql-13/bin/initdb --encoding UTF-8 --lc-collate='ru_RU.UTF-8' --lc-ctype='ru_RU.UTF-8' -D /var/lib/pgsql/13/data/
Если пакет postgresql13-server уже был установлен
Убейте СУБД (не забыв про бекап БД, если они уже созданы и нужны) и поставьте пакет заново:
yum remove postgresql13-server
rm -rf /var/lib/pgsql/
yum install postgresql13-server
Далее нужно зайти под пользователя postgres
su - postgres
И выполнить инициализацию указав соответствующие кодировки:
/usr/pgsql-13/bin/initdb --encoding UTF-8 --lc-collate='ru_RU.UTF-8' --lc-ctype='ru_RU.UTF-8' -D /var/lib/pgsql/13/data/
Включим его в автозагрузку и запустим службу
systemctl enable postgresql-13
systemctl start postgresql-13
Теперь нам необходимо включить авторизацию и создать пользователей, так как по умолчанию подключение локально разрешено для любого авторизированного в системе пользователя. Для этого заходим в систему под пользователем postgres и запускаем консоль управления СУБД:
psql -U postgres
Пользователь "postgres" является root'ом в СУБД. Поэтому начнём с того, что создадим для него пароль
ALTER ROLE postgres WITH PASSWORD 'your_super_password';
Теперь возвращаемся в консоль и обратно в root'а, дважды нажав сочетание клавиш "Ctrl+D".
Пора внести изменения в схему авторизации СУБД. Для этого нам потребуется отредактировать файл, расположенный по адресу /var/lib/pgsql/13/data/pg_hba.conf. Как обычно любым текстовым редактором:
nano /var/lib/pgsql/13/data/pg_hba.conf
... local all all md5 host all postgres 192.168.111.0/24 md5 host replication postgres 192.168.111.0/24 md5 ...
nano /var/lib/pgsql/13/data/postgresql.conf
... # какие адреса слушать, замените на IP этого сервера listen_addresses = '192.168.199.178' ...
Возвращаемся под пользователя ROOT (Ctrl+D)
Перезапускаем службу
systemctl restart postgresql-13
Пробуем подключиться от имени пользователя postgres:
psql -U postgres
Если успешно - выходим из пользователя
exit
Для удобства, чтобы не вводить пароль, но и не светить его в консоли, можно в домашней директории создать файл (он будет с права на чтение только для Вас), в котором записать пароль к СУБД
nano /root/.pgpass
localhost:*:*:postgres:your_super_password
chmod 600 /root/.pgpass
systemctl restart postgresql-13