PostgreSQL. AlmaLinux 8. PostgreSQL 13. Install: различия между версиями

Материал из Wiki
Перейти к навигации Перейти к поиску
(Новая страница: «= Установка = Идём на http://yum.postgresql.org/repopackages.php, ищем ссылку на самую последнюю версию репоз...»)
 
м (Cless переименовал страницу PostgreSQL. AlmaLinux 8. PostgreSQL 13 install в PostgreSQL. AlmaLinux 8. PostgreSQL 13. Install без оставления перенаправления)
 
(нет различий)

Текущая версия на 09:48, 5 сентября 2022

Установка

Идём на 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