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.