Необходима е първоначална конфигурация след инсталирането на 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. проверка на bootstrap

След като предварителната конфигурация е завършена, проверете дали 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
#След като се активира, задайте статус Активирано.
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. Добавете и опцията "постоянно", за да направите конфигурацията постоянна.

[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:

Ако е написано "портове: 5432/tcp", всичко е наред.

Достъп чрез pgadmin. Трябва да можете да влезете като потребител на postgres с паролата, която току-що зададохте.

3. резюме

Описахме първоначалната конфигурация, необходима при инсталирането на PostgreSQL. Първоначалното изграждане на PostgreSQL може да се окаже трудна задача, затова вижте този раздел.

Благодарим ви, че гледахте до края.