Начальная конфигурация, необходимая после установки PostgreSQL на CentOS и перед запуском.
Дата публикации:17 декабря 2020 года.
INFOMARTION > Начальная конфигурация, необходимая после установки PostgreSQL на CentOS и перед запуском.
Обзор.
Это процедура начальной настройки, необходимая для установки и запуска PostgreSQL на CentOS. Информация основана на предположении, что используется CentOS7. Также включен раздел по безопасности.
Рекомендуется PostgreSQL, так как он бесплатный и очень функциональный. Я слышал, что раньше функции PostgreSQL были медленными, но в последнее время они улучшились и стали быстрее.
Версии следующие.
Версия CentOS | 7.6 (1810) |
---|---|
Версия PostgreSQL | 9.2.24 |
Оглавление
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" также больше не нужна.
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' следующим образом.
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
#listen_addresses = 'localhost' # what IP address(es) to listen on;
#------------------------------------------------------------------------------
# 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
Добавьте следующую информацию в конец документа.
#Проверка подлинности пароля извне.
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
Предоставляется следующая информация.
[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 может оказаться непростой задачей, поэтому обратитесь к этому разделу.
Спасибо, что досмотрели до конца.
■INFORMATION
Пожалуйста, нажмите здесь, чтобы перейти на верхнюю страницу ИНФОРМАЦИЯ.
■PROFILE
Пожалуйста, нажмите здесь для получения профиля.
■Контактная информация.
Для получения информации о статье, пожалуйста, свяжитесь с нами здесь.