Centos 7 postgresql установка: Установка PostgreSQL на Centos 7 — Serverspace

Как установить PostgreSQL 12 на CentOS 8 / CentOS 7

Недорогой хостинг для сайтов

 

Это руководство проведет вас через шаги, используемые для установки PostgreSQL 12 на сервере CentOS 7 / CentOS 8 Linux ?. PostgreSQL — это система управления объектно-реляционными базами данных, основанная на POSTGRES 4.2. PostgreSQL 12 доступен для производственного использования разработчикам и администраторам баз данных.

Проект PostgreSQL предоставляет репозиторий пакетов всех поддерживаемых версий для наиболее распространенных дистрибутивов. Среди поддерживаемых дистрибутивов есть все семейство Red Hat, которое включает в себя CentOS, Fedora, Scientific Linux, Oracle Linux и Red Hat Enterprise Linux.

Для пользователей Ubuntu, проверьте: Установка PostgreSQL 12 на Ubuntu

Используйте следующие шаги для установки PostgreSQL 12 на CentOS 8 / CentOS 7.

Шаг 1. Добавление репозитория PostgreSQL Yum в CentOS 7 / CentOS 8

Репозиторий PostgreSQL Yum будет интегрироваться с вашими обычными системами и системами управления исправлениями, а также будет предоставлять автоматические обновления для всех поддерживаемых версий PostgreSQL в течение всего срока поддержки PostgreSQL.

Его можно добавить в систему CentOS, выполнив следующую команду:

CentOS 8:

sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

CentOS 7:

sudo yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Вы можете получить больше информации об установленном пакете, выполнив команду:

$ rpm -qi pgdg-redhat-repo
Name        : pgdg-redhat-repo
Version     : 42.0
Release     : 4
Architecture: noarch
Install Date: Thu 19 Sep 2019 06:34:53 PM UTC
Group       : System Environment/Base
Size        : 6915
License     : PostgreSQL
Signature   : DSA/SHA1, Wed 17 Apr 2019 04:12:42 AM UTC, Key ID 1f16d2e1442df0f8
Source RPM  : pgdg-redhat-repo-42.0-4.src.rpm
Build Date  : Wed 17 Apr 2019 04:12:41 AM UTC
Build Host  : koji-centos7-x86-64-pgbuild
Relocations : (not relocatable)
Vendor      : PostgreSQL Global Development Group
URL         : https://yum. postgresql.org
Summary     : PostgreSQL PGDG RPMs- Yum Repository Configuration for Red Hat / CentOS / Scientific Linux
Description :
This package contains yum configuration for Red Hat Enterprise Linux, CentOS
 and Scientific Linux. and also the GPG key for PGDG RPMs.

Шаг 2: Установка PostgreSQL 12 на CentOS 8 / CentOS 7

С добавленным репозиторием YUM мы можем установить PostgreSQL 12 на CentOS 7/8 с помощью следующей команды.

PostgreSQL 12 на CentOS 8

Отключите встроенный модуль PostgreSQL:

sudo dnf -qy module disable postgresql

Затем установите клиентский и серверный пакеты:

sudo dnf -y install postgresql12 postgresql12-server

PostgreSQL 12 на CentOS 7

Установите клиентские и серверные пакеты PostgreSQL:

sudo yum -y install epel-release yum-utils
sudo yum-config-manager --enable pgdg12
sudo yum install postgresql12-server postgresql12

Пример установки:

Dependencies Resolved

===================================================================================================================================================
 Package                                Arch                      Version                                  Repository                         Size
===================================================================================================================================================
Installing:
 postgresql12                           x86_64                    12beta4-1PGDG. rhel7                      pgdg12-testing                    1.8 M
 postgresql12-server                    x86_64                    12beta4-1PGDG.rhel7                      pgdg12-testing                    5.4 M
Installing for dependencies:
 libicu                                 x86_64                    50.2-3.el7                               base                              6.9 M
 postgresql12-libs                      x86_64                    12beta4-1PGDG.rhel7                      pgdg12-testing                    383 k
 python3                                x86_64                    3.6.8-10.el7                             base                               69 k
 python3-libs                           x86_64                    3.6.8-10.el7                             base                              7.0 M
 python3-pip                            noarch                    9.0.3-5.el7                              base                              1. 8 M
 python3-setuptools                     noarch                    39.2.0-10.el7                            base                              629 k

Transaction Summary
===================================================================================================================================================
Install  2 Packages (+6 Dependent packages)

Total download size: 24 M
Installed size: 104 M
Downloading packages:
(1/8): libicu-50.2-3.el7.x86_64.rpm                                                                                         | 6.9 MB  00:00:00     
warning: /var/cache/yum/x86_64/7/pgdg12-testing/packages/postgresql12-libs-12beta4-1PGDG.rhel7.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
Public key for postgresql12-libs-12beta4-1PGDG.rhel7.x86_64.rpm is not installed
(2/8): postgresql12-libs-12beta4-1PGDG.rhel7.x86_64.rpm                                                                     | 383 kB  00:00:00     
(3/8): python3-3. 6.8-10.el7.x86_64.rpm                                                                                      |  69 kB  00:00:00     
(4/8): python3-setuptools-39.2.0-10.el7.noarch.rpm                                                                          | 629 kB  00:00:00     
(5/8): postgresql12-12beta4-1PGDG.rhel7.x86_64.rpm                                                                          | 1.8 MB  00:00:00     
(6/8): python3-libs-3.6.8-10.el7.x86_64.rpm                                                                                 | 7.0 MB  00:00:00     
(7/8): postgresql12-server-12beta4-1PGDG.rhel7.x86_64.rpm                                                                   | 5.4 MB  00:00:00     
(8/8): python3-pip-9.0.3-5.el7.noarch.rpm                                                                                   | 1.8 MB  00:00:00     
---------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                               15 MB/s |  24 MB  00:00:01     
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Importing GPG key 0x442DF0F8:
 Userid     : "PostgreSQL RPM Building Project <[email protected]>"
 Fingerprint: 68c9 e2b9 1a37 d136 fe74 d176 1f16 d2e1 442d f0f8
 Package    : pgdg-redhat-repo-42. 0-4.noarch (installed)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libicu-50.2-3.el7.x86_64                                                                                                        1/8 
  Installing : postgresql12-libs-12beta4-1PGDG.rhel7.x86_64                                                                                    2/8 
  Installing : python3-libs-3.6.8-10.el7.x86_64                                                                                                3/8 
  Installing : python3-setuptools-39.2.0-10.el7.noarch                                                                                         4/8 
  Installing : python3-3.6.8-10.el7.x86_64                                                                                                     5/8 
  Installing : python3-pip-9.0.3-5.el7. noarch                                                                                                  6/8 
  Installing : postgresql12-12beta4-1PGDG.rhel7.x86_64                                                                                         7/8 
  Installing : postgresql12-server-12beta4-1PGDG.rhel7.x86_64                                                                                  8/8 
  Verifying  : postgresql12-libs-12beta4-1PGDG.rhel7.x86_64                                                                                    1/8 
  Verifying  : python3-pip-9.0.3-5.el7.noarch                                                                                                  2/8 
  Verifying  : libicu-50.2-3.el7.x86_64                                                                                                        3/8 
  Verifying  : python3-libs-3.6.8-10.el7.x86_64                                                                                                4/8 
  Verifying  : postgresql12-12beta4-1PGDG. rhel7.x86_64                                                                                         5/8 
  Verifying  : postgresql12-server-12beta4-1PGDG.rhel7.x86_64                                                                                  6/8 
  Verifying  : python3-setuptools-39.2.0-10.el7.noarch                                                                                         7/8 
  Verifying  : python3-3.6.8-10.el7.x86_64                                                                                                     8/8 

Installed:
  postgresql12.x86_64 0:12beta4-1PGDG.rhel7                            postgresql12-server.x86_64 0:12beta4-1PGDG.rhel7                           

Dependency Installed:
  libicu.x86_64 0:50.2-3.el7       postgresql12-libs.x86_64 0:12beta4-1PGDG.rhel7 python3.x86_64 0:3.6.8-10.el7 python3-libs.x86_64 0:3.6.8-10.el7
  python3-pip.noarch 0:9.0.3-5.el7 python3-setuptools.noarch 0:39.2.0-10. el7

Шаг 3: Инициализируйте и запустите службу базы данных

После установки требуется инициализация базы данных, прежде чем можно будет запустить службу.

sudo /usr/pgsql-12/bin/postgresql-12-setup initdb

Основная конфигурация базы данных ifile записывается в: /var/lib/pgsql/12/data/postgresql.conf

Запустите и включите службу сервера базы данных.

sudo systemctl enable --now postgresql-12

Убедитесь, что служба запущена без ошибок.

$ systemctl status postgresql-12
● postgresql-12.service - PostgreSQL 12 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-12.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-09-19 18:50:10 UTC; 39s ago
     Docs: https://www.postgresql.org/docs/12/static/
  Process: 10647 ExecStartPre=/usr/pgsql-12/bin/postgresql-12-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 10652 (postmaster)
   CGroup: /system. slice/postgresql-12.service
           ├─10652 /usr/pgsql-12/bin/postmaster -D /var/lib/pgsql/12/data/
           ├─10654 postgres: logger   
           ├─10656 postgres: checkpointer   
           ├─10657 postgres: background writer   
           ├─10658 postgres: walwriter   
           ├─10659 postgres: autovacuum launcher   
           ├─10660 postgres: stats collector   
           └─10661 postgres: logical replication launcher   

Sep 19 18:50:10 cent7.novalocal systemd[1]: Starting PostgreSQL 12 database server...
Sep 19 18:50:10 cent7.novalocal postmaster[10652]: 2019-09-19 18:50:10.207 UTC [10652] LOG:  starting PostgreSQL 12beta4 on x86_64-pc-lin... 64-bit
Sep 19 18:50:10 cent7.novalocal postmaster[10652]: 2019-09-19 18:50:10.209 UTC [10652] LOG:  listening on IPv6 address "::1", port 5432
Sep 19 18:50:10 cent7.novalocal postmaster[10652]: 2019-09-19 18:50:10.209 UTC [10652] LOG:  listening on IPv4 address "127.0. 0.1", port 5432
Sep 19 18:50:10 cent7.novalocal postmaster[10652]: 2019-09-19 18:50:10.214 UTC [10652] LOG:  listening on Unix socket "/var/run/postgresq...L.5432"
Sep 19 18:50:10 cent7.novalocal postmaster[10652]: 2019-09-19 18:50:10.229 UTC [10652] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
Sep 19 18:50:10 cent7.novalocal postmaster[10652]: 2019-09-19 18:50:10.254 UTC [10652] LOG:  redirecting log output to logging collector process
Sep 19 18:50:10 cent7.novalocal postmaster[10652]: 2019-09-19 18:50:10.254 UTC [10652] HINT:  Future log output will appear in directory "log".
Sep 19 18:50:10 cent7.novalocal systemd[1]: Started PostgreSQL 12 database server.
Hint: Some lines were ellipsized, use -l to show in full.

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

sudo firewall-cmd --add-service=postgresql --permanent
sudo firewall-cmd --reload

Шаг 4: Установите пароль администратора PostgreSQL

Установить администратора PostgreSQL

$ sudo su - postgres 
~]$ psql -c "alter user postgres with password 'StrongPassword'" 
ALTER ROLE

Отредактируйте файл 

/var/lib/pgsql/12/data/postgresql. conf и установите адрес прослушивания на IP-адрес вашего сервера или « * » для всех интерфейсов.

listen_addresses = '192.168.10.10'

Также установите PostgreSQL для приема удаленных подключений

$ sudo vim /var/lib/pgsql/12/data/pg_hba.conf

# Accept from anywhere
host all all 0.0.0.0/0 md5

# Accept from trusted subnet
host all all 192.168.18.0/24 md5

Перезапустите службу базы данных после внесения изменений.

sudo systemctl restart postgresql-12

Рекомендуемый контент

Установка PostgreSQL на CentOS 7

Установка PostgreSQL

В первую очередь надо исключить Postgre из стандартных репов, вставив в файл /etc/yum.repos.d/CentOS-Base.repo в секции [base] и [updates] строку:

exclude=postgresql*

Затем подключить реп от разработчиков постгре и установить его менеджером пакетов:

yum localinstall http://yum. postgresql.org/9.3/redhat/rhel-7-x86_64/pgdg-centos93-9.3-1.noarch.rpm
yum install postgresql93-server

Инициализировать базу:

/usr/pgsql-9.3/bin/postgresql93-setup initdb

Включить автозапуск демона при старте системы и запустить его:

systemctl enable postgresql-9.3.service
systemctl start postgresql-9.3.service

Подключиться к базе, сменить пароль пользователя postgres и выйти:

sudo -u postgres psql
alter user postgres password 'NEWPASS';
\q

PostgreSQL установлен, но доступен только локальным приложениям. Для включения коннекта по сети необходимо раскомментировать строку и изменить значение параметра listen_addresses в файле /var/lib/pgsql/9.3/data/postgresql.conf с 'localhost' на '*'. И в файле /var/lib/pgsql/9.3/data/pg_hba.conf изменить параметр IPv4 local connections:

nano /var/lib/pgsql/9.3/data/postgresql.conf
listen_addresses = '*'
nano /var/lib/pgsql/9. 3/data/pg_hba.conf
host all all 0.0.0.0/0 md5

Обязательно указать md5, иначе будет отклонять сетевые соединения, в том числе и локалхоста.

Перезапустить демон:

systemctl restart postgresql-9.3.service

Убедиться, что Postgre слушает все доступные адреса:

netstat -plan | grep 5432
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      28632/postgres      
tcp6       0      0 :::5432                 :::*                    LISTEN      28632/postgres      
unix  2      [ ACC ]     STREAM     LISTENING     53534    28632/postgres       /tmp/.s.PGSQL.5432

Теперь Postgre слушает все интерфейсы, но подключиться все-равно невозможно из-за политик фаервола. Требуется добавить правило, разрешающее подключение по указанному порту. Перед закрытием тега zone вставить строку:

nano /etc/firewalld/zones/public.xml
  <service name="postgresql"/>

И перезапустить фаервол:

systemctl restart firewalld. service

PostgreSQL установлен, работает и доступен для подключений по сети.


Установка pgAgent (тут все гораздо веселее:)

Установить и разрешить pgAgent:

yum install pgagent_93
systemctl enable pgagent_93.service

Запустить sql скрипт создания таблиц и других объектов в схеме для pgagent и запустить демон:

sudo -u postgres psql -f /usr/share/pgagent_93-3.4.0/pgagent.sql postgres
systemctl start pgagent_93.service
Job for pgagent_93.service failed. See 'systemctl status pgagent_93.service' and 'journalctl -xn' for details.

Фэйлед значит, последуем совету и посмотрим что там:

systemctl status pgagent_93.service
pgagent_93.service - PgAgent for PostgreSQL 9.3
   Loaded: loaded (/usr/lib/systemd/system/pgagent_93.service; enabled)
   Active: failed (Result: exit-code) since Сб 2014-11-22 01:28:30 NOVT; 1min 52s ago
  Process: 29664 ExecStart=/usr/bin/pgagent_93 -s ${LOGFILE} hostaddr=${DBHOST} dbname=${DBNAME} user=${DBUSER} port=${DBPORT} (code=exited, status=217/USER)
systemd[1]: pgagent_93. service: control process exited, code=exited status=217
systemd[1]: Failed to start PgAgent for PostgreSQL 9.3.
systemd[1]: Unit pgagent_93.service entered failed state.

Смотрим service файл пгагента /etc/systemd/system/multi-user.target.wants/pgagent_93.service и видим, что демон должен стартовать от пользователя pgagent, которого в системе не оказалось. Добавить нужного пользователя и попытаться снова запустить сервис:

useradd -s /bin/false -r -M pgagent
systemctl start pgagent_93.service
systemctl status pgagent_93.service
pgagent_93.service - PgAgent for PostgreSQL 9.3
   Loaded: loaded (/usr/lib/systemd/system/pgagent_93.service; enabled)
   Active: active (running) since Сб 2014-11-22 01:45:48 NOVT; 1min 10s ago
  Process: 23629 ExecStart=/usr/bin/pgagent_93 -s ${LOGFILE} hostaddr=${DBHOST} dbname=${DBNAME} user=${DBUSER} port=${DBPORT} (code=exited, status=0/SUCCESS)
 Main PID: 23630 (pgagent_93)
   CGroup: /system.slice/pgagent_93.service
           └─23630 /usr/bin/pgagent_93 -s /var/log/pgagent_93. log hostaddr=127.0.0.1 dbname=postgres user=postgres port=5432
pgagent_93[23629]: Can not open the logfile!01:46:58: Error: can't open file '/var/log/pgagent_93.log' (error 13: Permission denied)

Вроде запустилось, только нет прав писать в лог, дать возможность это делать:

chown pgagent:pgagent /var/log/pgagent_93.log
systemctl restart pgagent_93.service
systemctl status pgagent_93.service
pgagent_93.service - PgAgent for PostgreSQL 9.3
   Loaded: loaded (/usr/lib/systemd/system/pgagent_93.service; enabled)
   Active: active (running) since Сб 2014-11-22 01:50:13 NOVT; 1s ago
  Process: 23727 ExecStop=/usr/bin/kill -TERM /usr/bin/pgagent_93 (code=exited, status=1/FAILURE)
  Process: 23736 ExecStart=/usr/bin/pgagent_93 -s ${LOGFILE} hostaddr=${DBHOST} dbname=${DBNAME} user=${DBUSER} port=${DBPORT} (code=exited, status=0/SUCCESS)
 Main PID: 23737 (pgagent_93)
   CGroup: /system.slice/pgagent_93.service
           └─23737 /usr/bin/pgagent_93 -s /var/log/pgagent_93.log hostaddr=127. 0.0.1 dbname=postgres user=postgres port=5432
systemd[1]: Starting PgAgent for PostgreSQL 9.3...
systemd[1]: Started PgAgent for PostgreSQL 9.3.

Кажется работает, но через минуту падает и можно видеть это:

systemctl status pgagent_93.service
pgagent_93.service - PgAgent for PostgreSQL 9.3
   Loaded: loaded (/usr/lib/systemd/system/pgagent_93.service; enabled)
   Active: failed (Result: exit-code) since Сб 2014-11-22 01:50:59 NOVT; 20s ago
  Process: 23750 ExecStop=/usr/bin/kill -TERM /usr/bin/pgagent_93 (code=exited, status=1/FAILURE)
  Process: 23736 ExecStart=/usr/bin/pgagent_93 -s ${LOGFILE} hostaddr=${DBHOST} dbname=${DBNAME} user=${DBUSER} port=${DBPORT} (code=exited, status=0/SUCCESS)
 Main PID: 23737 (code=exited, status=1/FAILURE)
systemd[1]: Starting PgAgent for PostgreSQL 9.3...
systemd[1]: Started PgAgent for PostgreSQL 9.3.
systemd[1]: pgagent_93.service: main process exited, code=exited, status=1/FAILURE
kill[23750]: kill: cannot find process "/usr/bin/pgagent_93"
systemd[1]: pgagent_93. service: control process exited, code=exited status=1
systemd[1]: Unit pgagent_93.service entered failed state.

Т.е. лог говорит, что PgAgent упал со статусом FAILURE, а kill после этого не может найти процесс /usr/bin/pgagent_93. Чё это вообще за нафиг?!?!
Иду посмотреть записи событий самого пгагент:

cat /var/log/pgagent_93.log
WARNING: Couldn't create the primary connection (attempt 1): Ð.Ð.Ð.Ð.Ð.:  полÑ.зоваÑ.елÑ. "postgres" не пÑ.оÑ.Ñ.л пÑ.овеÑ.кÑ. подлинноÑ.Ñ.и (Ident)
...
ERROR: Stopping pgAgent: Couldn't establish the primary connection with the database server.

Нда…Эти каракули значат «Пользователь postgres не прошел проверку подлинности» и в следствии этого пгагент не может приконнектиться к базе. В английской локализации системы ошибка выглядит так:

FATAL:  Ident authentication failed for user "postgres"

Проверяю запуск PgAgent из консоли с рекомендованным коннекшн стрингом и максимальным уровнем логирования:

/usr/bin/pgagent_93 -l 2 hostaddr=127. 0.0.1 dbname=postgres user=postgres port=5432 
DEBUG: Creating primary connection
[root@localhost ~]# DEBUG: Connection Information:
DEBUG:      user         : postgres
DEBUG:      port         : 5432
DEBUG:      host         : 127.0.0.1
DEBUG:      dbname       : postgres
DEBUG:      password     : 
DEBUG:      conn timeout : 0
DEBUG: Connection Information:
DEBUG:      user         : postgres
DEBUG:      port         : 5432
DEBUG:      host         : 127.0.0.1
DEBUG:      dbname       : postgres
DEBUG:      password     : 
DEBUG:      conn timeout : 0
DEBUG: Creating DB connection: user=postgres port=5432 hostaddr=127.0.0.1 dbname=postgres
WARNING: Couldn't create the primary connection (attempt 1): fe_sendauth: no password supplied
DEBUG: Clearing all connections
DEBUG: Connection stats: total - 1, free - 0, deleted - 1

Поле пароля пустое, поэтому не пускает, попробовать с паролем:

/usr/bin/pgagent_93 -l 2 hostaddr=127.0.0.1 dbname=postgres user=postgres port=5432 password=NEWPASS
DEBUG: Creating primary connection
DEBUG: Connection Information:
DEBUG:      user         : postgres
DEBUG:      port         : 5432
DEBUG:      host         : 127. 0.0.1
DEBUG:      dbname       : postgres
DEBUG:      password     : NEWPASS
DEBUG:      conn timeout : 0
DEBUG: Connection Information:
DEBUG:      user         : postgres
DEBUG:      port         : 5432
DEBUG:      host         : 127.0.0.1
DEBUG:      dbname       : postgres
DEBUG:      password     : NEWPASS
DEBUG:      conn timeout : 0
DEBUG: Creating DB connection: user=postgres port=5432 hostaddr=127.0.0.1 password=NEWPASS dbname=postgres
DEBUG: Database sanity check
DEBUG: Clearing zombies
DEBUG: Checking for jobs to run
DEBUG: Sleeping...

Есть контакт, отлично. Теперь надо сервису pgagent указать пароль для авторизации путем правки service файла:

nano /etc/systemd/system/multi-user.target.wants/pgagent_93.service 
...
# Location of database directory
Environment=DBNAME=postgres
Environment=DBUSER=postgres
Environment=DBHOST=127.0.0.1
Environment=DBPORT=5432
Environment=PASS=NEWPASS
Environment=LOGFILE=/var/log/pgagent_93.log
...
ExecStart=/usr/bin/pgagent_93 -s ${LOGFILE} hostaddr=${DBHOST} dbname=${DBNAME} user=${DBUSER} port=${DBPORT} password=${PASS}
ExecStop=/usr/bin/kill -TERM /usr/bin/pgagent_93
. ..

Перечитать конфиг service файла и перезапустить демон:

systemctl daemon-reload
systemctl restart pgagent_93.service
systemctl status pgagent_93.service
pgagent_93.service - PgAgent for PostgreSQL 9.3
   Loaded: loaded (/usr/lib/systemd/system/pgagent_93.service; enabled)
   Active: active (running) since Пт 2014-11-21 20:12:12 EST; 1min 38s ago
  Process: 19550 ExecStop=/usr/bin/kill -TERM /usr/bin/pgagent_93 (code=exited, status=1/FAILURE)
  Process: 19571 ExecStart=/usr/bin/pgagent_93 -s ${LOGFILE} hostaddr=${DBHOST} dbname=${DBNAME} user=${DBUSER} port=${DBPORT} password=${PASS} (code=exited, status=0/SUCCESS)
 Main PID: 19572 (pgagent_93)
   CGroup: /system.slice/pgagent_93.service
           └─19572 /usr/bin/pgagent_93 -s /var/log/pgagent_93.log hostaddr=127.0.0.1 dbname=postgres user=postgres port=5432 password=NEWPASS
ноя 21 20:12:12 localhost.localdomain systemd[1]: Starting PgAgent for PostgreSQL 9.3...
ноя 21 20:12:12 localhost.localdomain systemd[1]: Started PgAgent for PostgreSQL 9. 3.

Запустился и приконнектился к базе, но смущает этот FAILURE от ExecStop. После удаления этой записи все заработало как надо.
Если все-таки не стартует — посмотреть есть ли значение md5 в /var/lib/pgsql/9.3/data/pg_hba.conf


Подключение экстеншенсов

При подключении расширения возникает такая ошибка:

sudo -u postgres psql
CREATE EXTENSION postgres_fdw;
ОШИБКА: не удалось открыть управляющий файл расширения "/usr/pgsql-9.3/share/extension/postgres_fdw.control": Нет такого файла или каталога

Возникает из-за того, что экстеншенсы не установлены и надо просто сделать это:

yum install postgresql-contrib

Повторная установка проходит нормально:

sudo -u postgres psql
CREATE EXTENSION postgres_fdw;
CREATE EXTENSION

На этом установка окончена.

centos — Не удалось найти файлы postgresql.conf и pg_hba.conf в моей установке postgresql

Задавать вопрос

спросил

Изменено
2 года назад

Просмотрено
141 тысяч раз

Следуя всем инструкциям UNIXMEN, установил postgresql-9. 4 в CentOS 6.4 . Все прошло хорошо, служба запустилась, и я смог получить доступ к экрану pgsql . Но когда я пытаюсь настроить phpPgAdmin , я не могу найти файлы

  • postgresql.conf
  • pg_hba.conf
  • config.inc.php
  • phpPgAdmin.conf

В инструкции сказано, что домашний каталог postgresql будет находиться в /etc/../ , а некоторые говорят, что это будет /var/lib/ . Где создается каталог (в CentOS)?

Отличается ли путь к каталогу установки в Centos, Redhat (RHEL7) и Ubuntu?

Обновление:
Я выполнил команду быстрого поиска для *postgresql.conf** и *hba.conf**, я нашел файлы примеров как postgresql.conf.sample и pg_hba.conf.sample (по адресу /usr/pgsql- 9,4/доля/ )

  • центос
  • rhel
  • установка программного обеспечения
  • postgresql

5

Если вы введете следующее:

sudo su - postgres

после установки postgresql-server, это приведет вас прямо к домашнему каталогу postgres и будет иметь файлы конфигурации, которые вы ищете. Обычно в среде RHEL файлы конфигурации хранятся в /var/lib/pgsql/. В моей тестовой среде он хранится в /var/lib/pgsql/9.1/данные .

2

Используйте команду linux locate (документы: http://man7.org/linux/man-pages/man1/locate.1.html)

 [root@CENTOS7 pgsql]# locate pg_hba.conf
/usr/pgsql-10/share/pg_hba.conf.sample
/var/lib/pgsql/10/data/pg_hba.conf
 

1

Я в CenOS 7, locate не установлен по умолчанию. Аналогично ответу выше, но запустите с показать cmd ниже:

 psql -U postgres -c 'показать config_file'
 

И найдите файлы в /data/pgdata/postgresql.conf .

1

Следующий запрос поможет найти файл конфигурации postgres.

 postgres=# SHOW config_file;
             config_file
-------------------------------------
 /var/lib/pgsql/data/postgresql.conf
(1 ряд)
[root@node1 usr]# cd /var/lib/pgsql/data/
[данные root@node1]# ls -lrth
всего 48К
-rw------- 1 postgres postgres 4 25 ноября 13:58 PG_VERSION
drwx------ 2 postgres postgres 6 25 ноября 13:58 pg_twophase
drwx------ 2 postgres postgres 6 25 ноября 13:58 pg_tblspc
drwx------ 2 postgres postgres 6 ноя 25 13:58 pg_snapshots
drwx------ 2 postgres postgres 6 ноя 25 13:58 pg_serial
drwx------ 4 postgres postgres 36 ноябрь 25 13:58 pg_multixact
-rw------- 1 postgres postgres 20K 25 ноя 13:58 postgresql. conf
-rw------- 1 postgres postgres 1.6K 25 ноя 13:58 pg_ident.conf
-rw------- 1 postgres postgres 4.2K 25 нояб. 13:58 pg_hba.conf
drwx------ 3 postgres postgres 60 25 ноября 13:58 pg_xlog
drwx------ 2 postgres postgres 18 ноя 25 13:58 pg_subtrans
drwx------ 2 postgres postgres 18 ноя 25 13:58 pg_clog
drwx------ 5 postgres postgres 41 ноябрь 25 13:58 база
-rw------- 1 постгрес постгрес 92 ноя 25 14:00 postmaster.pid
drwx------ 2 postgres postgres 18 ноя 25 14:00 pg_notify
-rw------- 1 postgres postgres 57 25 ноября 14:00 postmaster.opts
drwx------ 2 postgres postgres 32 ноя 25 14:00 pg_log
drwx------ 2 postgres postgres 4.0K 25 ноя 14:00 глобальная
drwx------ 2 postgres postgres 25 ноя 25 14:20 pg_stat_tmp
 

Я использую CentOS 7, и мне пришлось запустить initdb для создания файлов postgresql.conf (и других).

 /usr/pgsql-11/bin/postgresql-11-настройка initdb
 

Я также использую CentOS7. Для меня команда была:

 $ су — постгрес
$su — постгрес
$ psql постгрес
# показать config_file;
 /var/lib/pgsql/data/postgresql. conf
# \q
$ выход
$ выход
 

вы не сможете найти pg_hba.conf с помощью команды locate , поскольку она принадлежит пользователю postgres, а не пользователю root. В моем CentOS 7 pg_hba.conf присутствовал по адресу /var/lib/pgsql/12/data

концентратор

Содержание

Рекламные объявления

В этой статье я покажу вам, как установить базу данных PostgreSQL на RHEL/CentOS 7/8. PostgreSQL — это очень популярная бесплатная система управления реляционными базами данных с открытым исходным кодом, предназначенная для обработки различных рабочих нагрузок, начиная от одной машины и заканчивая хранилищами данных с множеством одновременно работающих пользователей. Это мощное, быстрое и надежное средство, которое в настоящее время используется администраторами баз данных, разработчиками и всеми людьми, работающими с базами данных за последние 25 лет. Это база данных по умолчанию в системах на базе MAC. Проверьте официальную документацию для получения дополнительной информации.

Особенности PostgreSQL

  • Надежная база данных для динамических веб-сайтов
  • Высокая надежность с возможностью аварийного восстановления
  • Настоятельно рекомендуется для программирования на стороне сервера
  • Полностью поддерживается такими языками программирования, как C++, Java, Python, Ruby, Perl и т. д.
  • Имеет определенные пользователем типы данных
  • Поддерживает наследование таблиц
  • Соответствует требованиям ACID
  • Обладает функциями отказоустойчивости и высокой доступности
  • Он имеет многоверсионный контроль параллелизма (MVCC)
  • Поддерживает механизм блокировки

Как установить базу данных PostgreSQL на RHEL/CentOS 7/8

Читайте также: Как установить kubectl на Ubuntu 20.04 LTS (Focal Fossa) 9 0003

Шаг 1: Предпосылки

a ) У вас должен быть работающий сервер RHEL/CentOS 7/8 .

б) У вас должен быть sudo или root доступ для запуска привилегированных команд.

c) В вашей системе должна быть доступна утилита yum или dnf .

d) Убедитесь, что PostgreSQL по умолчанию Порт 5432 разрешен из брандмауэра, если он у вас есть.

 

Шаг 2. Обновите сервер

Прежде чем продолжить установку, давайте синхронизируем систему с последними доступными обновлениями с помощью команды yum update или dnf update , как показано ниже. Если какие-либо пакеты требуют обновления, это можно сделать с помощью команды yum upgrade или dnf upgrade.

Рекламные объявления

 [root@cyberithub ~]# yum update
Загруженные плагины: fastmirror, langpacks
Загрузка зеркальных скоростей из кэшированного хост-файла
* база: centos-hcm.viettelidc.com.vn
* epel: mirrors.bestthaihost.com
* дополнительные материалы: centos-hcm. viettelidc.com.vn
* обновления: centos-hcm.viettelidc.com.vn
Разрешение зависимостей
--> Запуск проверки транзакции
---> Пакет powershell.x86_64 0:7.2.1-1.rh будет обновлен
---> Пакет powershell.x86_64 0:7.2.2-1.rh будет обновлением
---> Пакет snap-confine.x86_64 0:2.54.3-1.el7 будет обновлен
---> Пакет snap-confine.x86_64 0:2.54.4-1.el7 будет обновлением
---> Пакет snapd.x86_64 0:2.54.3-1.el7 будет обновлен
---> Пакет snapd.x86_64 0:2.54.4-1.el7 будет обновлением
---> Пакет snapd-selinux.noarch 0:2.54.3-1.el7 будет обновлен
---> Пакет snapd-selinux.noarch 0:2.54.4-1.el7 будет обновлением
--> Завершенное разрешение зависимостей
...................................... 

 

Шаг 3. Установка базы данных PostgreSQL

Существует несколько способов установки сервера баз данных PostgreSQL в Linux. Здесь мы установим его из репозитория по умолчанию, используя команду yum install postgresql-server postgresql-contrib , как показано ниже.

 [root@cyberithub ~]# yum install postgresql-server postgresql-contrib
Загруженные плагины: fastmirror, langpacks
Загрузка зеркальных скоростей из кэшированного хост-файла
* база: centos-hcm.viettelidc.com.vn
* epel: mirrors.bestthaihost.com
* дополнительные материалы: centos-hcm.viettelidc.com.vn
* обновления: centos-hcm.viettelidc.com.vn
Разрешение зависимостей
--> Запуск проверки транзакции
---> Пакет postgresql-contrib.x86_64 0:9.2.24-7.el7_9 будет установлен
--> Зависимость обработки: postgresql-libs(x86-64) = 9.2.24-7.el7_9 для пакета: postgresql-contrib-9.2.24-7.el7_9.x86_64
--> Зависимость обработки: postgresql(x86-64) = 9.2.24-7.el7_9 для пакета: postgresql-contrib-9.2.24-7.el7_9.x86_64
--> Зависимость обработки: libpq.so.5()(64bit) для пакета: postgresql-contrib-9.2.24-7.el7_9.x86_64
--> Зависимость обработки: libossp-uuid.so.16()(64bit) для пакета: postgresql-contrib-9.2.24-7.el7_9.x86_64
---> Пакет postgresql-server.x86_64 0:9.2.24-7.el7_9 будет установлен
--> Запуск проверки транзакции
---> Пакет postgresql. x86_64 0:9.2.24-7.el7_9 будет установлен
---> Пакет postgresql-libs.x86_64 0:9.2.24-7.el7_9 будет установлен
---> Пакет uuid.x86_64 0:1.6.2-26.el7 будет установлен
--> Завершенное разрешение зависимостей
................................. 

 

Шаг 4. Проверка версии PostgreSQL

После успешной установки вы можете проверить текущую установленную версию с помощью команды postgres -V , как показано ниже.

 [root@cyberithub ~]# postgres -V
postgres (PostgreSQL) 9.2.24 

 

Шаг 5. Инициализация базы данных

Следующим шагом является инициализация базы данных с помощью команды postgresql-setup initdb , как показано ниже.

 [root@cyberithub ~]# postgresql-setup initdb
Инициализация базы данных... OK 

 

Шаг 6: Запустите службу БД

После инициализации базы данных нам нужно запустить службу с помощью команды systemctl start postgresql, как показано ниже. Вы также можете проверить статус службы с помощью команды systemctl status postgresql .

 [root@cyberithub ~]# systemctl запустить postgresql
[root@cyberithub ~]# статус systemctl postgresql
● postgresql.service — сервер базы данных PostgreSQL.
Загружено: загружено (/usr/lib/systemd/system/postgresql.service; отключено; настройка поставщика: отключена)
Активен: активен (работает) со среды 23 марта 2022 г., 08:34:33 по восточному поясному времени; 1с назад
Процесс: 11584 ExecStart=/usr/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (код=выход, статус=0/УСПЕХ)
Процесс: 11574 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Основной PID: 11587 (постгрес)
Заданий: 7
CGroup: /system.slice/postgresql.service
├─11587 /usr/bin/postgres -D /var/lib/pgsql/data -p 5432
├─11588 postgres: процесс регистрации
├─11590 postgres: процесс контрольной точки
├─11591 postgres: процесс записи
├─11592 postgres: процесс записи wal
├─11593 postgres: процесс запуска автоочистки
└─11594 postgres: процесс сбора статистики

23 марта, 08:34:32 Cyberithub systemd[1]: Запуск сервера базы данных PostgreSQL. ..
23 марта, 08:34:33 Cyberithub systemd[1]: запущен сервер базы данных PostgreSQL. 

 

Шаг 7. Включение службы

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

 [root@cyberithub ~]# systemctl включить postgresql
Создана символическая ссылка из /etc/systemd/system/multi-user.target.wants/postgresql.service в /usr/lib/systemd/system/postgresql.service. 

 

Шаг 8. Открытие приглашения PSQL

Если вы вошли в систему как пользователь root, сначала вам нужно переключиться на пользователя без полномочий root, поскольку приглашение psql невозможно открыть из учетной записи root. Здесь мы переключаемся на пользователя postgres по умолчанию, а затем запускаем приглашение, используя psql , как показано ниже.

 [root@cyberithub ~]# su - postgres
-bash-4.2$ psql
psql (9.2.24)
Введите "помощь" для помощи.

postgres=# 

 

Шаг 9. Контрольный список баз данных

Теперь вы можете использовать приглашение psql для выполнения запросов PostgreSQL. Например, если вы хотите проверить список баз данных, вам нужно использовать метакоманду \l , как показано ниже.

 postgres=# \l
Список баз данных
Имя | Владелец | Кодирование | Разобрать | Тип | Права доступа
-----------+----------+-----------+-------------+-- --------------------------+-----------------------
постгрес | постгрес | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
шаблон0 | постгрес | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =с/постгрес +
| | | | | postgres=CTc/postgres
шаблон1 | постгрес | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =с/постгрес +
| | | | | postgres=CTc/postgres
(3 ряда) 

 

Шаг 10. Проверка информации о подключении

Аналогичным образом, если вы хотите проверить информацию о подключении к базе данных, вам нужно использовать метакоманду \conninfo , как показано ниже. Это даст вам имя БД, пользователя, через которого вы подключены, и порт, на котором работает база данных. В нашем случае это по умолчанию Порт 5432 .

 postgres=# \conninfo
Вы подключены к базе данных "postgres" как пользователь "postgres" через сокет в "/var/run/postgresql" через порт "5432". 

 

Шаг 11. Создайте базу данных

Вы также можете создать образец базы данных и протестировать запросы PostgreSQL. В этом примере мы создаем базу данных с именем cyberithub , используя запрос create database cyberithub , как показано ниже. То же самое можно проверить, проверив список баз данных с помощью метакоманды \l .

 postgres=# создать базу данных cyberithub;
СОЗДАТЬ БАЗУ ДАННЫХ
postgres=# \l
Список баз данных
Имя | Владелец | Кодирование | Разобрать | Тип | Права доступа
------------+----------+-----------+-------------+- ---------------------------+-----------------------
киберитхаб | постгрес | UTF8 | en_US. UTF-8 | en_US.UTF-8 |
постгрес | постгрес | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
шаблон0 | постгрес | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =с/постгрес +
| | | | | postgres=CTc/postgres
шаблон1 | постгрес | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =с/постгрес +
| | | | | postgres=CTc/postgres
(4 ряда) 

 

Шаг 12. Выйдите из PSQL

Чтобы выйти из приглашения psql, вам нужно использовать метакоманду \q , как показано ниже.

 postgres-# \q
-bash-4.2$ 

 

Шаг 13. Удаление базы данных PostgreSQL

Наконец, когда вы закончите использовать базу данных PostgreSQL, вы также можете удалить ее из своей системы, используя yum remove postgresql-server postgresql-contrib 900 14 команду, как показано ниже.

 [root@cyberithub ~]# yum удалить postgresql-server postgresql-contrib
Загруженные плагины: fastmirror, langpacks
Разрешение зависимостей
--> Запуск проверки транзакции
---> Пакет postgresql-contrib.