PostgreSQL13服务显示active但psql无法连接的故障排查
PostgreSQL服务显示active但无法连接修复方案
核心问题点
postgresql.conf中listen_addresses = '*'配置被注释,默认监听规则不符合预期pg_hba.conf中IPv6连接规则配置非法:::0/00不是合法的IPv6 CIDR格式,会导致数据库加载鉴权规则失败,进程虽然存活但无法正常响应连接请求- 可能存在Unix socket目录权限异常、配置修改后未彻底重启服务的问题
修复操作步骤
- 修正
postgresql.conf配置,放开监听地址注释,确保配置如下:
listen_addresses = '*' # what IP address(es) to listen on; # comma-separated list of addresses; # defaults to 'localhost'; use '*' for all # (change requires restart) port = 5432 # (change requires restart) max_connections = 100 # (change requires restart) #superuser_reserved_connections = 3 # (change requires restart) unix_socket_directories = '/var/run/postgresql' # comma-separated list of directories
- 修正
pg_hba.conf中错误的IPv6规则,将非法的::0/00替换为合法的::/0,对应配置段修改为:
# IPv6 local connections: host all all ::/0 trust
注意:
trust鉴权模式允许任意IP/用户无需密码直接连接数据库,仅适合本地测试环境使用,生产环境请替换为scram-sha-256等安全鉴权方式
- 修复Unix socket目录权限,避免因目录不存在、权限不足导致本地socket连接失败:
sudo mkdir -p /var/run/postgresql sudo chown -R postgres:postgres /var/run/postgresql sudo chmod 755 /var/run/postgresql
- 彻底重启PostgreSQL服务加载全部配置,不要使用reload操作:
sudo systemctl stop postgresql sudo systemctl start postgresql # 确认服务启动状态 sudo systemctl status postgresql
- 验证本地连接:
sudo su - postgres psql
如果执行以上操作后仍无法连接,直接查看PostgreSQL 13的运行日志定位具体错误,默认日志路径为/var/log/postgresql/postgresql-13-main.log,日志末尾的报错信息会明确标注问题原因,常见的剩余问题包括数据目录权限错误、5432端口被其他进程占用、磁盘空间满等。
内容的提问来源于stack exchange,提问作者krishna lodha
相关产品推荐
相关产品推荐

