PostgreSQL的数据库参数配置主要通过postgresql.conf文件进行定义,其中有部分定义是跟文件路径有关的。
写在前面:有一次在配置数据库开放访问权限的时候,修改$PGDATA/pg_hba.conf文件重启后并没有生效,前前后后找了很长时间,最后发现是在postgresql.conf文件中修改了hba文件的路径导致的。本文就简要介绍一下与配置文件路径相关的这部分内容。
文件路径简要介绍
在PostgreSQL数据库中,除了postgresql.conf文件外,还有另外两个手工编辑的配置文件,用来控制客户端访问。默认情况下,这三个配置文件都在数据库的data目录下($PGDATA)。本段内容讨论的是如何任意指定这些配置文件放置在什么地方。(进行这种操作在一些管理场景下更容易,特别是在保证配置文件安全和及时本分的场景下)。
data_directory (string)
postgresql.conf文件中的这个配置参数,用来指定数据存储的路径。这个参数只有在数据库启动的时候才能生效。
config_file (string)
该配置用来指定主要的服务器配置文件位置(我们习惯称之为postgresql.conf)。该参数只能在postgres命令行进行指定。
hba_file (string)
postgresql.conf文件中的这个配置参数,用来指定基于主机授权的访问配置文件(习惯称之为pg_hba.conf文件)。该参数只能在数据库启动的时候才能生效。
ident_file (string)
postgresql.conf文件中的这个配置参数,用来指定用户名映射的配置文件(习惯称之为pg_ident.conf文件)。该参数只能在数据库启动的时候才能生效。
external_pid_file (string)
postgresql.conf文件中的这个配置参数,用来指定一个特定的PID文件,该文件为数据库服务创建,主要给服务端管理程序使用。该参数只能在数据库启动的时候才能生效。
PostgreSQL数据库服务默认安装情况下,以上参数已经被设定好。data路径可以通过-D命令行参数或者PGDATA环境变量来指定,所有的配置文件都在data路径下。
如果您不想将这些配置文件放在默认data路径下,那您首先需要通过-D参数或PGDATA环境变量来指定包含postgresql.conf配置文件的路径,然后将data_directory配置参数目录设置在postgresql.conf文件中,以指定实际数据路径的位置。此处注意:data_directory路径会覆盖-D和PGDATA指定的数据路径,但是不会覆盖配置文件的位置。
最后总结一下,您可以对config_file, hba_file and/or ident_file这几个文件进行单独的指定。config_file只能在postgres命令行进行指定,其他参数可以在配置文件中指定。如果这三个配置参数和data_directory都进行了单独的设定,那么就可以不指定-D或PGDATA。(指定这些文件位置时,如果使用相对路径,会采用postgres命令的位置进行相对获取)。
本文介绍了PostgreSQL数据库中配置文件路径的相关知识,包括data_directory、config_file、hba_file和ident_file等参数的用途和设置方法。这些参数用于指定数据存储路径、主配置文件、主机授权文件和用户名映射文件的位置。若要改变配置文件位置,可通过启动参数或环境变量进行设定,但要注意data_directory的设置会覆盖默认数据路径。
3150

被折叠的 条评论
为什么被折叠?



