PostgreSQL:修改配置文件 pg_hba.conf、postgresql.conf 注意点

在维护 PostgreSQL 库时,有两个配置文件修改的情况比较多,第一是认证文件 pg_hba.conf,另一个是配置文件 postgresql.conf。 其中 pg_hba.conf 的更改更频繁些,因为业务服务器经常出现调整,或增加应用服务器,此时需要增加 pg_hba.conf 的 IP 签权信息,因为目前我们的生产库对 IP 实行严格控制,只有指定的 IP 权限才被开放,下面是一个生产库的 pg_hba.conf 文件。

pg_hba.conf 文件

1
2
3
4
5
6
7
8
9
10
# TYPE DATABASE    USER      ADDRESS         METHOD
host postgres all 0.0.0.0/0 reject
host template0 all 0.0.0.0/0 reject
host template1 all 0.0.0.0/0 reject

#Aplication Ip list
host all all xxx.xxx.xxx.xxx/32 md5
...
...
省略部分

备注:前三行的认证策略为 reject ,表示不允许任何远程的连接连接系统库,之后才是应用服务器的IP 列表,没列入文件的 IP 将不允许连接,这就是常见的 “no pg_hba.conf entry” 错误。

$ “no pg_hba.conf entry” 错误

1
psql: FATAL: no pg_hba.conf entry for host "192.168.101.40", user "francs", database "francs", SSL off

备注:更多的时候,有时不小心在配置文件 pg_hba.conf 增加了非法字符,也不会报错,但会带来问题,举个简单的例子。

pg_hba.conf 添加一行

1
2
3
#Aplication Ip list
host all all xxx.xxx.xxx.xxx/32 md5
host francs francs 192.168.1.25 md5

备注:最后一行为新增的行,这条策略的本意是允许 192.168.1.25 以 francs 用户连接 francs 库,但不小心漏了子网排码。

重载配置文件

1
2
[pg93@redhatB ~]$ pg_ctl reload -D $PGDATA
server signaled

备注: reload 时并不报错,更多信息需要查看日志文件。

查看数据库日志

1
2
2013-09-09 17:20:47.034 CST,,,2504,,51bfaf13.9c8,92,,2013-06-18 08:51:31 CST,,0,LOG,F0000,"configuration file ""/database/pg93/pg_root/postgresql.conf"" contains errors; unaffected changes were applied",,,,,,,,,""
2013-09-09 17:20:47.049 CST,,,2504,,51bfaf13.9c8,93,,2013-06-18 08:51:31 CST,,0,LOG,F0000,"invalid IP mask ""md5"": Name or service not known",,,,,"line 99 of configuration file ""/database/pg93/pg_root/pg_hba.conf""",,,,""

备注:日志信息显示了 pg_hba.conf 文件报错的行号,估计 PG 的初学者很容易掉这坑里,因此,在更改完 pg 的任何配置文件时,建议查看日志文件,勤快点,别偷懒。当然这里有两点需要说明:

  1. pg_hba.conf 文件的更改对当前连接不影响,仅影响更改配置之后的新的连接;
  2. 上面的例子仅是一个小的格式错误,如果更严重点的格式问题,会影响这个 pg_hba.conf 文件的认证策略, 从而影响业务。

总结

  1. pg_hba.conf 文件的更改对当前连接不影响,仅影响更改配置之后的新的连接;
  2. 上面的例子仅是一个小的格式错误,如果更严重点的格式问题,会影响这个 pg_hba.conf 文件的认证策略, 从而影响业务。
  3. PostgreSQL.conf 配置文件的更改情况类似,这里不演示了。

参考

最后推荐和张文升共同编写的《PostgreSQL实战》,本书基于PostgreSQL 10 编写,共18章,重点介绍SQL高级特性、并行查询、分区表、物理复制、逻辑复制、备份恢复、高可用、性能优化、PostGIS等,涵盖大量实战用例!

购买链接:https://item.jd.com/12405774.html

PostgreSQL实战
感谢支持!
0%