PostgreSQL重载后缺失postgresql.auto.conf文件的恢复/重建及新主机访问问题
PostgreSQL重载后缺失postgresql.auto.conf文件的恢复/重建及新主机访问问题
嗨Sri,别担心,我来帮你一步步解决这两个问题:
关于postgresql.auto.conf缺失的问题
首先得跟你说清楚:这个文件是PostgreSQL专门用来保存通过ALTER SYSTEM命令修改的配置参数的。如果你从来没执行过ALTER SYSTEM来调整数据库参数,那这个文件本来就不存在,日志里的“skipping missing configuration file”只是个通知性的提示,完全不会影响数据库的正常运行,你可以直接忽略它。
但如果之前这个文件确实存在(比如你之前用ALTER SYSTEM改过参数),现在不小心弄丢了,那可以这样重建:
- 方式一:回忆之前用
ALTER SYSTEM设置过的参数,重新执行一遍对应的ALTER SYSTEM命令,PostgreSQL会自动帮你重新生成postgresql.auto.conf文件。 - 方式二:如果你有之前的配置备份(比如postgresql.conf的备份,或者旧的auto.conf备份),可以把原来在auto.conf里的参数提取出来,手动创建
/var/lib/pgsql/11/data/postgresql.auto.conf文件,格式和postgresql.conf一致,写完之后执行重载命令让配置生效:
或者用系统服务命令(如果是systemd管理的话):pg_ctl reload -D /var/lib/pgsql/11/datasystemctl reload postgresql-11
确保新主机的用户能正常访问数据库
你修改了pg_hba.conf添加新主机条目后,要确认这几点:
- 检查pg_hba.conf里的新条目格式是否正确,比如要符合这个结构:
举个例子,如果要让所有用户从192.168.3.0/24网段访问所有数据库,用md5认证,条目就是:host <数据库名> <用户名> <新主机IP/网段> <认证方式>host all all 192.168.3.0/24 md5 - 确认重载操作真的生效了:可以查看数据库日志,找有没有“received SIGHUP, reloading configuration files”这类的成功提示,或者重新执行一遍重载命令。
- 实际测试连接:在新主机上用客户端工具尝试连接,比如用psql的话:
如果连接失败,去PostgreSQL日志里找具体的错误信息——比如是认证失败,就检查用户的密码或者认证方式;如果是连接被拒绝,就检查pg_hba.conf的条目是否正确,或者服务器的防火墙有没有放行5432端口。psql -h <你的PostgreSQL服务器IP> -U <用户名> -d <要访问的数据库名>
备注:内容来源于stack exchange,提问作者mattili
相关产品推荐
相关产品推荐

