pgAdmin3连接服务器,核心流程就是“准备连接参数填写连接窗口测试并保存”,其中最关键的是确保服务器监听地址、端口和防火墙规则放行。无论你是连接本机还是远程PostgreSQL,搞清楚这三个环节,基本就能解决九成以上的连接问题。
pgAdmin3连接服务器的前置检查
很多人打开pgAdmin3直接填IP就点连接,结果报错“服务器拒绝连接”,其实问题往往出在源头PostgreSQL服务器本身没准备好。
第一步:确认PostgreSQL服务正在运行
在服务器上打开终端或命令提示符,输入:
# Linux系统 sudo systemctl status postgresql # Windows系统 net start | findstr postgresql
看到“active (running)”或服务名存在,说明服务正常,如果没运行,先启动它:
sudo systemctl start postgresql
第二步:确认监听地址和端口
PostgreSQL默认只监听localhost,也就是仅允许本机连接,远程连接必须修改配置文件postgresql.conf:
# 找到这一行,取消注释并修改 listen_addresses = 'localhost' # 改为 listen_addresses = ''
端口默认是5432,业务需要可以改,但改完要记得防火墙同步放行。
第三步:确认pg_hba.conf认证规则
这是很多人容易忽视的环节。pg_hba.conf文件控制哪些IP可以连、用什么方式认证,至少需要加一条类似这样的规则:
host all all 0.0.0.0/0 md5
这条表示允许所有IP通过密码认证连接所有数据库,实际部署建议缩小IP范围,只放行你的办公网段。
修改完这两个配置文件,重启PostgreSQL服务让配置生效。
pgadmin3连接远程数据库的完整步骤
前置检查做完了,下面进pgAdmin3实际操作。
打开pgAdmin3主界面
启动pgAdmin3后,左侧是对象浏览器树,右键点击“服务器”,选择“新建服务器”,如果你用的是汉化版,菜单显示“新增服务器”。
填写连接参数
这里几项最关键,逐个说清楚:
| 配置项 | 说明 | |
|---|---|---|
| 名称 | 任意,生产环境MySQL” | 只是pgAdmin3里的显示名,不影响实际连接 |
| 主机 | 服务器IP或域名 | 本机连接填localhost,远程填实际IP |
| 端口 | 5432 | 改了配置就填对应端口 |
| 维护数据库 | postgres | 连接后默认进入的库,通常填postgres |
| 用户名 | postgres或实际用户 | 注意大小写 |
| 密码 | 对应用户的密码 | 建议勾选“保存密码”方便下次免输入 |
填完后先别急着点“确定”,先点“测试连接”按钮,如果能通,会弹窗提示连接成功,不通的话,根据报错信息去排查。
保存并连接
测试通过后,点击“确定”保存连接配置,左侧树形结构中出现你命名的服务器节点,双击展开就能看到数据库列表。
pgadmin3连接不上服务器的常见原因排查
连接失败是高频问题,行业共识认为多数情况下是防火墙或认证配置问题,下面按优先级从高到低排查。
提示“无法连接到服务器,连接超时”
这类报错几乎都是网络层问题,按顺序检查:
- 服务器防火墙:Linux执行
systemctl status firewalld查看状态,Windows检查“高级安全Windows Defender防火墙”入站规则 - 云服务器安全组:简米云、酷番云、华为云需要在控制台放行5432端口入方向
- 本机网络:
ping 服务器IP看通不通,telnet 服务器IP 5432看端口通不通
如果telnet不通但ping得通,八成是中间设备拦截了端口。
提示“致命错误:用户密码认证失败”
密码不对,或者pg_hba.conf里的认证方式不对,前者的解决方案是重置密码,后者的解决方案是确认配置行是md5或scram-sha-256。
提示“无法连接到服务器:拒绝连接”
可能性有两个:
- PostgreSQL没启动,回到第一部分再检查
- 监听地址没改对,确认
listen_addresses = ''且配置生效
每次连接都要输密码很麻烦
在pgAdmin3的连接配置里勾选“保存密码”,并确保pgpass文件权限正确,Linux下该文件位于~/.pgpass,需要设置权限为600,格式是主机:端口:数据库:用户名:密码。
通过SSH隧道连接pgadmin3怎么配置
很多生产环境出于安全考虑不直接开放5432端口,要求通过SSH隧道连接,pgAdmin3自带这个功能。
在连接配置的“SSH隧道”标签页中:
- 勾选“使用SSH隧道”
- 隧道主机:填堡垒机或跳板机IP
- 隧道端口:22
- 隧道用户名:SSH登录用户名
- 认证方式:密码或私钥文件,私钥填私钥文件路径
启用后,数据库“主机”填localhost即可,因为SSH隧道已经把端口转发了。
连接成功后,你应该先做这几件事
连接上了不代表万事大吉,建议按下面的顺序做一遍基础检查。
- 查看数据库列表:展开服务器节点下的“数据库”,确认目标库可见
- 查看表结构:展开“架构”->“public”->“表”,右键任意表选择“属性”,能正常显示说明权限正常
- 执行一个简单查询:打开SQL编辑器,输入
SELECT version();,能返回PostgreSQL版本号说明连接通畅 - 设置自动重连:在连接配置的“高级”标签页中设置“连接超时”和“会话空闲超时”,避免长时间闲置断连
常见问题解答
pgadmin3连接服务器时提示“server does not listen”怎么解决?
这个报错说明请求到了服务器,但PostgreSQL没有监听在对应端口,首先检查postgresql.conf中的listen_addresses是否包含了请求的IP,其次确认port配置是否正确,最后查看系统日志确认服务是否正常启动,很多情况下是端口被占用导致PostgreSQL启动失败。
pgadmin3支持连接MySQL数据库吗?
不支持,pgAdmin3是PostgreSQL官方的管理工具,只能连接PostgreSQL数据库,如果你需要同时管理MySQL和PostgreSQL,可以考虑使用DBeaver或Navicat这类通用数据库客户端。
Windows系统下pgadmin3连接本机数据库也需要修改配置文件吗?
如果你只是连接本机的PostgreSQL,一般不需要修改listen_addresses,因为默认的localhost监听已经满足需求,但如果你同时安装了多个PostgreSQL版本,要注意端口是否冲突,比如5432被占用了就需要修改其中一个实例的端口配置,Windows下配置文件位于C:\Program Files\PostgreSQL\版本号\data\目录中。
pgAdmin3虽然已经停止更新多年,但因为它轻量、启动快、占用资源少,仍然有相当一部分老用户在用,只要按着前面的思路把网络、配置、认证三个环节理顺,日常使用完全够用,如果哪天它无法满足你的需求,再考虑迁移到pgAdmin4或DBeaver也不迟。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/792361.html


