После установки PostgreSQL часто нужно подправить конфигурационные параметры и потом посмотреть эффект. Лично у меня бывает так, что я не помню/не знаю, где находятся конфиг.файлы (например, если происходит установка PostgreSQL из пакетов — непонятно, куда эти файлы попадут).
Если устанавливать PostgreSQL из исходных кодов, можно задать расположение этих файлов — но это расположение можно забыть, через месяц-два.
Так что решил сохранить в одном месте все (мне) известные способы посмотреть места сохранения конфиг.файлов:
Для начала — в документации есть статья о том, какие есть конфигурационные файлы — расположение файлов.
Чтобы просмотреть расположение этих файлов, необходимо воспользоваться командой psql SHOW:
SHOW config_file;
config_file
-----------------------------------------
/etc/postgresql/12/main/postgresql.conf
(1 row)
SHOW data_directory;
data_directory ----------------------------- /var/lib/postgresql/12/main (1 row)
SHOW hba_file;
hba_file
-------------------------------------
/etc/postgresql/12/main/pg_hba.conf
(1 row)
SHOW ident_file;
ident_file
---------------------------------------
/etc/postgresql/12/main/pg_ident.conf
(1 row)
SHOW external_pid_file;
external_pid_file
---------------------------------
/var/run/postgresql/12-main.pid
(1 row)
Файл postgresql.auto.conf находится в каталоге с данными — в указанном выше data_directory.
Копируем путь и далее уже можем отредактировать эти файлы:
vim /etc/postgresql/12/main/postgresql.conf
Можно посмотреть некоторые из этих файлов и не уходя из PostgreSQL-клиента — с помощью SQL-запроса:
SELECT * FROM pg_hba_file_rules;
line_number| type | database | user_name | address | netmask | auth_method | options | error
-------------+-------+---------------+------------+-----------+-----------------------------------------+-------------+---------+-------
89 | local | {all} | {postgres} | | | peer | |
94 | local | {all} | {all} | | | peer | |
96 | host | {all} | {all} | 127.0.0.1 | 255.255.255.255 | md5 | |
98 | host | {all} | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | md5 | |
101 | local | {replication} | {all} | | | peer | |
102 | host | {replication} | {all} | 127.0.0.1 | 255.255.255.255 | md5 | |
103 | host | {replication} | {all} | ::1 | ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff | md5 | |
(7 rows)
SELECT * FROM pg_file_settings;
sourcefile | sourceline | seqno | name | setting | applied | error -----------------------------------------+------------+-------+----------------------------+-----------------------------------------+---------+------- /etc/postgresql/12/main/postgresql.conf | 41 | 1 | data_directory | /var/lib/postgresql/12/main | t | /etc/postgresql/12/main/postgresql.conf | 43 | 2 | hba_file | /etc/postgresql/12/main/pg_hba.conf | t | /etc/postgresql/12/main/postgresql.conf | 45 | 3 | ident_file | /etc/postgresql/12/main/pg_ident.conf | t | /etc/postgresql/12/main/postgresql.conf | 49 | 4 | external_pid_file | /var/run/postgresql/12-main.pid | t | /etc/postgresql/12/main/postgresql.conf | 63 | 5 | port | 5432 | t |
SELECT * FROM pg_settings;
name | setting | unit
----------------------------------------+-----------------------------------------+------
allow_system_table_mods | off |
application_name | psql |
archive_cleanup_command | |
archive_command | (disabled) |
archive_mode | off |
archive_timeout | 0 | s
array_nulls | on |
authentication_timeout | 60 | s
SELECT * FROM pg_config;
BINDIR | /usr/lib/postgresql/12/bin DOCDIR | /usr/share/doc/postgresql-doc-12 HTMLDIR | /usr/share/doc/postgresql-doc-12 INCLUDEDIR | /usr/include/postgresql PKGINCLUDEDIR | /usr/include/postgresql INCLUDEDIR-SERVER | /usr/include/postgresql/12/server LIBDIR | /usr/lib/x86_64-linux-gnu PKGLIBDIR | /usr/lib/postgresql/12/lib LOCALEDIR | /usr/share/locale MANDIR | /usr/share/postgresql/12/man SHAREDIR | /usr/share/postgresql/12 SYSCONFDIR | /etc/postgresql-common PGXS | /usr/lib/postgresql/12/lib/pgxs/src/makefiles/pgxs.mk
Возможно, есть еще какие-то полезные SQL-команды, буду находить и дополнять данный список.
UPD: Можно просматривать файлы и вот таким образом. Например, хотим увидеть содержимое postgresql.auto.conf. Обычно он хранится в каталоге с данными (PGDATA). Узнаешь путь до него:
SHOW data_directory;
И выполняем SQL-запрос:
SELECT pg_read_file('/var/lib/postgresql/12/main/postgresql.auto.conf') \g (tuples_only=on format=unaligned)
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
wal_level = 'logical'
И так можно открывать любые другие файлы (если права есть).
Leave a Reply