После установки 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