在维护 PostgreSQL 库时,有两个配置文件修改的情况比较多,第一是认证文件 pg_hba.conf,另一个是配置文件 postgresql.conf。 其中 pg_hba.conf 的更改更频繁些,因为业务服务器经常出现调整,或增加应用服务器,此时需要增加 pg_hba.conf 的 IP 签权信息,因为目前我们的生产库对 IP 实行严格控制,只有指定的 IP 权限才被开放,下面是一个生产库的 pg_hba.conf 文件。
pg_hba.conf 文件
1 |
# TYPE DATABASE USER ADDRESS METHOD |
备注:前三行的认证策略为 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 |
#Aplication Ip list |
备注:最后一行为新增的行,这条策略的本意是允许 192.168.1.25 以 francs 用户连接 francs 库,但不小心漏了子网排码。
重载配置文件
1 |
[pg93@redhatB ~]$ pg_ctl reload -D $PGDATA |
备注: reload 时并不报错,更多信息需要查看日志文件。
查看数据库日志
1 |
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",,,,,,,,,"" |
备注:日志信息显示了 pg_hba.conf 文件报错的行号,估计 PG 的初学者很容易掉这坑里,因此,在更改完 pg 的任何配置文件时,建议查看日志文件,勤快点,别偷懒。当然这里有两点需要说明:
- pg_hba.conf 文件的更改对当前连接不影响,仅影响更改配置之后的新的连接;
- 上面的例子仅是一个小的格式错误,如果更严重点的格式问题,会影响这个 pg_hba.conf 文件的认证策略, 从而影响业务。
总结
- pg_hba.conf 文件的更改对当前连接不影响,仅影响更改配置之后的新的连接;
- 上面的例子仅是一个小的格式错误,如果更严重点的格式问题,会影响这个 pg_hba.conf 文件的认证策略, 从而影响业务。
- PostgreSQL.conf 配置文件的更改情况类似,这里不演示了。
参考
原创文章,作者:1402239773,如若转载,请注明出处:https://blog.ytso.com/tech/database/238006.html