如果 pg_ident.conf 文件存在,则系统会基于文件内容将当前登陆的操作系统用户映射为一个PostgreSQL数据库内部用户的身份来登陆。
查看配置文件的位置
postgres=# select name,setting,context from pg_settings where category='File Locations';
name | setting | context
-------------------+----------------------------------+------------
config_file | /data/pgsql_data/postgresql.conf | postmaster
data_directory | /data/pgsql_data | postmaster
external_pid_file | | postmaster
hba_file | /data/pgsql_data/pg_hba.conf | postmaster
ident_file | /data/pgsql_data/pg_ident.conf | postmaster
(5 rows)
说明:
context 字段代表作用范围。
(1) superuser 表示超级用户级配置项,只能由超级用户来修改。
修改并且重新加载后会在所有用户会话中生效。非超级用户不能在自己的会话中修改覆盖这个值。
(2) postmaster 更改后需要重启PostgreSQL服务才能生效。
(3) user 表示用户级配置项,可以被每个用户单独修改。该配置项针对每个用户都可以有不同的值。
用户修改后会在自己的所有会话中生效。
9.5 版中引入了一个新的 pg_file_settings 视图,通过该视图也可以进行配置信息查询。
查询该视图会列出每个配置项所属的配置文件。其中 applied 字段表示该配置项是否已经生效,如果值为 f,表示需要重启服务器或者重加载配置文件。
如果 postgresql.conf 和 postgresql.auto.conf 中存在同名配置,那么后者会覆盖前者,前者在 pg_file_settings 中对应的条目会显示 applied 字段为 f。
postgres=# SELECT name, sourcefile, sourceline, setting, applied FROM pg_file_settings WHERE name IN ('listen_addresses','shared_buffers') ORDER BY name;
name | sourcefile | sourceline | setting | applied
------------------+----------------------------------+------------+---------+---------
listen_addresses | /data/pgsql_data/postgresql.conf | 58 | * | t
shared_buffers | /data/pgsql_data/postgresql.conf | 113 | 128MB | t