Начальная конфигурация, необходимая после установки PostgreSQL на CentOS и перед запуском.


Дата публикации:17 декабря 2020 года.



INFOMARTION > Начальная конфигурация, необходимая после установки PostgreSQL на CentOS и перед запуском.

Обзор.

Это процедура начальной настройки, необходимая для установки и запуска PostgreSQL на CentOS. Информация основана на предположении, что используется CentOS7. Также включен раздел по безопасности.

Рекомендуется PostgreSQL, так как он бесплатный и очень функциональный. Я слышал, что раньше функции PostgreSQL были медленными, но в последнее время они улучшились и стали быстрее.

Версии следующие.

Версия CentOS7.6 (1810)
Версия PostgreSQL9.2.24

Оглавление

  1. установить
  2. Детали настройки
  3. резюме

1. установить

В этом разделе описана процедура установки PostgreSQL.

1-1. Установка PostgreSQL

Выполните установку PostgreSQL с помощью команды yum. Выполните работу от имени пользователя root.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postgresql-server

2. Детали настройки

В этом разделе описывается конфигурация вплоть до запуска PostgreSQL.

2-1. Создайте выделенного пользователя PostgreSQL.

Я хотел создать выделенного пользователя для работы с PostgreSQL (использовать команды psql), но пользователь уже был создан. Я помню создание пользователей, когда я создавал их в прошлом, так что, возможно, спецификация изменилась.

Попробуйте переключиться на пользователя с помощью следующей команды.

[root@hostname ~]# su - postgres

Поскольку некоторые люди, возможно, используют более старую версию PostgreSQL, следует упомянуть, что процедура установки переменных окружения путем изменения следующего ".bashrc" также больше не нужна.

.bashrc


export PGHOME=/var/lib/pgsql
export PGDATA=/var/lib/pgsql/data
export PGHOST=localhost

PGDATA по умолчанию для пользователей postgres теперь будет '/var/lib/pgsql/data'. По описанию он обращается к "/usr/lib/systemd/system/postgresql.service".

2-2. Подготовка данных PostgreSQL

Создайте данные PostgreSQL. Кодировка - UNICODE. Каталог "/var/lib/pgsql/data" был создан по умолчанию, но тем, кто этого не сделал, также предлагается создать папку.

-bash-4.2$ initdb --encoding=UNICODE

Поскольку "PGDATA=/var/lib/pgsql/data" установлен в "/usr/lib/systemd/system/postgresql.service", "initdb --encoding=UNICODE" создаст БД под "/var/lib/pgsql/ data/", БД собирается под "/var/lib/pgsql/data/".

2-3. Изменение конфигурационного файла

Разрешить IP-адресам доступ к PostgreSQL. Настройте систему так, чтобы она проходила аутентификацию по паролю для нелокального доступа.

[root@hostname ~]# vi /var/lib/pgsql/data/postgresql.conf

Измените файл 'postgresql.conf' следующим образом.

postgresql.conf【До изменений】


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;

postgresql.conf【после изменения】


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'         # what IP address(es) to listen on;

В дополнение к этому, поскольку это важная часть безопасности, если вы установите этот параметр, вы сможете получить доступ к сайту с любого IP. Если IP-адрес, к которому необходимо получить доступ, является фиксированным, укажите фиксированный IP-адрес.

Эта настройка необходима при входе в систему с сервера, отличного от того, на котором установлен PostgreSQL, например, с помощью pgadmin. Этот параметр не нужен, если вы вошли на сервер и выполнили команду psql. (поскольку соединение исходит от него самого (localhost)).

Это важный параметр безопасности, поэтому максимально сократите количество пользователей, которые могут получить к нему доступ.

Затем измените файл 'pg_hba.conf'.

[root@hostname ~]# vi /var/lib/pgsql/data/pg_hba.conf

Добавьте следующую информацию в конец документа.

pg_hba.conf


#Проверка подлинности пароля извне.
host    all             all             0.0.0.0/0            md5

При включении этой настройки при подключении извне требуется пароль. Эти области могут быть серьезными дырами в безопасности, если они не настроены или настроены неправильно, поэтому, пожалуйста, настраивайте их с особой тщательностью.

2-4. проверка бутстрапа

Теперь, когда предварительная конфигурация завершена, проверьте запуск PostgreSQL. Поскольку БД была создана под пользователем postgres, перед началом работы переключитесь на пользователя postgres.

[root@hostname ~]# su - postgres
-bash-4.2$ pg_ctl start

После успешного запуска PostgreSQL проверьте, что команда psql работает без проблем. Выполните команду psql от имени пользователя postgres.

-bash-4.2$ psql -l
                                         Database List
   Name    |  Owner   | Encoding         |  Collation Order   | Ctype(conversion operator) |      Access rights
-----------+----------+------------------+--------------------+----------------------------+-----------------------
 postgres  | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                |
 template0 | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                | =c/postgres          +
           |          |                  |                    |                            | postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                | =c/postgres          +
           |          |                  |                    |                            | postgres=CTc/postgres
(3 lines)

Ничего страшного, если будут получены вышеуказанные результаты.

2-5. Настройка автоматического запуска

Хотя это не является обязательным, трудно запускать PostgreSQL при каждом перезапуске сервера, поэтому он настроен так, чтобы PostgreSQL запускался автоматически при запуске сервера. Он также регистрируется командой systemctl. Обратите внимание, что эта процедура предназначена для CentOS7, поэтому если вы используете что-то другое, кроме CentOS7, вам нужно будет использовать команду Service для решения этой проблемы.

Проверьте, существует ли '/usr/lib/systemd/system/postgresql.service'. Если нет, создайте 'postgresql.service' с помощью следующей процедуры. Запустите от имени пользователя root.

[root@hostname ~]# touch /etc/systemd/system/postgresql.service
[root@hostname ~]# vi /etc/systemd/system/postgresql.service

Предоставляется следующая информация.

postgresql.service


[Unit]
#Описание.
Description=PostgreSQL
#Контроль до и после исполнения.
#Before=xxx.service
After=network.target

[Service]
#Назначение пользователей и групп
User=postgres
Group=postgres
#После активации установите статус Activated.
Type=oneshot
RemainAfterExit=yes
#Запуск, остановка и перезарядка.
Environment=PGDATA=/var/lib/pgsql/data
ExecStart=/usr/bin/pg_ctl start -D /var/lib/pgsql/data
ExecStop=/usr/bin/pg_ctl stop
ExecReload=/usr/bin/pg_ctl reload

[Install]
#Эквивалентные настройки Runlevel 3.
WantedBy=multi-user.target

Затем зарегистрируйтесь с помощью команды systemctl.

[root@hostname ~]# systemctl enable postgresql
[root@hostname ~]# systemctl is-enabled postgresql
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep postgresql
postgresql.service                                enabled
[root@hostname ~]# systemctl daemon-reload

2-6. Добавление административного пользователя в PostgreSQL

Создайте пользователя, который будет использоваться в приложении PostgreSQL, отдельно от пользователя, который работает с PostgreSQL из Linux. Это пользователь при работе с pgadmin и т.д. Я хочу изменить пароль пользователя postgres, который существует по умолчанию, и использовать его.

Выполните следующую команду от имени пользователя postgres.

-bash-4.2$ psql
postgres=# alter role postgres with password '(компьютерный) пароль';
postgres=# \q

※Введите пароль, который вы хотите установить, в поле 'Пароль'.

2-7. Сверление брандмауэров

Разрешите доступ к порту PostgreSQL, поскольку брандмауэр (iptables для CentOS6 и более ранних версий) по умолчанию разрешает только доступ по ssh на CentOS7. Добавьте также опцию 'permanent', чтобы сделать конфигурацию постоянной.

[root@hostname ~]# firewall-cmd --permanent --zone=public --add-port=5432/tcp
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports: 8080/tcp 5432/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Если там написано 'ports: 5432/tcp', то все в порядке.

Доступ через pgadmin. Вы должны иметь возможность войти в систему как пользователь postgres с паролем, который вы только что установили.

3. резюме

Мы описали начальную конфигурацию, необходимую при установке PostgreSQL. Первоначальная сборка PostgreSQL может оказаться непростой задачей, поэтому обратитесь к этому разделу.

Спасибо, что досмотрели до конца.