Azure Linux虚拟机Psql与Windows虚拟机Pgadmin-4连接超时及401错误求助
问题排查与解决步骤
1. 确认PostgreSQL服务监听状态
- 在Linux虚拟机上执行命令,检查5432端口是否正常监听所有地址:
输出应包含ss -tulpn | grep 54320.0.0.0:5432或:::5432,说明已正确监听所有IP。 - 若未正确监听,重启PostgreSQL服务:
(注:部分发行版需指定版本,如sudo systemctl restart postgresqlpostgresql-14.service)
2. 排查网络连通性
- Azure网络安全组(NSG)验证:
确认Linux虚拟机的NSG已添加入站规则,允许5432端口流量,源地址设为Windows虚拟机的私有IP或所在子网。 - Linux本地防火墙检查:
- 若使用ufw:
若启用状态,添加端口允许规则:sudo ufw statussudo ufw allow 5432/tcp - 若使用firewalld:
sudo firewall-cmd --add-port=5432/tcp --permanent sudo firewall-cmd --reload
- 若使用ufw:
- Windows端连通性测试:
打开PowerShell执行:
若Test-NetConnection <Linux_VM_IP> -Port 5432TcpTestSucceeded为False,重点排查网络层面问题。
3. 解决PgAdmin 4的401认证错误
- 重置PgAdmin登录凭据:
关闭PgAdmin后,删除本地保存的服务器连接,重新创建连接时手动输入PostgreSQL的用户名(默认postgres)和对应密码,避免使用缓存的凭据。 - 检查PgAdmin服务状态:
在Windows服务管理器中找到pgAdmin 4服务,重启该服务后再尝试连接。 - 验证PgAdmin配置(服务器模式):
若PgAdmin以服务器模式运行,打开配置文件(路径示例:C:\Program Files\PostgreSQL\15\pgAdmin 4\web\config.py),确认SERVER_MODE = True,并检查用户账号配置是否正确。
4. 细化PostgreSQL配置检查
- pg_hba.conf规则确认:
确保配置文件中包含针对Windows虚拟机IP的规则,例如:
(替换host all all <Windows_VM_IP>/32 scram-sha-256<Windows_VM_IP>为实际IP,认证方法可根据PostgreSQL版本调整,如md5)
修改后必须重启PostgreSQL服务生效。 - 查看PostgreSQL日志:
查看Linux虚拟机上的PostgreSQL日志(路径示例:/var/log/postgresql/postgresql-14-main.log),日志中会记录连接失败的具体原因(如认证失败、IP拒绝等),比PgAdmin日志更精准。
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

