一、配置PostgreSQL允许远程连接
要让pgAdmin远程访问PostgreSQL数据库,首先需要确保PostgreSQL服务器允许远程连接。需修改以下两个核心配置文件:
postgresql.conf:找到listen_addresses参数,将其值从localhost改为*(允许监听所有网络接口),例如:sudo vi /var/lib/pgsql/data/postgresql.conf # CentOS默认路径
# 修改为
listen_addresses = '*'
pg_hba.conf:添加一条规则允许远程IP通过密码认证连接(0.0.0.0/0表示允许所有IP,生产环境建议替换为具体客户端IP段),例如:sudo vi /var/lib/pgsql/data/pg_hba.conf
# 在文件末尾添加
host all all 0.0.0.0/0 md5
sudo systemctl restart postgresql # 或 postgresql-15(根据版本调整)
二、配置防火墙允许pgAdmin端口
pgAdmin默认通过5432端口与PostgreSQL通信,需确保防火墙开放该端口:
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent # 永久开放
sudo firewall-cmd --reload # 重新加载规则
sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
sudo service iptables save # 保存规则
三、安装并配置pgAdmin(Web版,推荐)
pgAdmin的Web版更适合远程管理,以下是安装步骤:
sudo yum install -y pgadmin4-web # CentOS 7/8/9均适用
sudo /usr/pgadmin4/bin/pgadmin4-web-setup.sh
# 按提示输入管理员邮箱(如admin@example.com)和密码(如PgAdmin@123)
sudo systemctl start pgadmin4 # 启动服务
sudo systemctl enable pgadmin4 # 开机自启动
四、配置Web服务器(Apache)允许远程访问
pgAdmin Web版依赖Apache提供HTTP服务,需调整配置以允许外部访问:
sudo cp /etc/httpd/conf.d/pgadmin4.conf.sample /etc/httpd/conf.d/pgadmin4.conf
pgadmin4.conf,确认以下设置:
Listen localhost:80改为Listen 80(允许所有IP访问);ServerName localhost改为服务器公网IP或域名(如ServerName pgadmin.example.com)。sudo systemctl restart httpd
五、在pgAdmin中添加远程PostgreSQL服务器
http://your_server_ip),使用初始化时设置的管理员邮箱和密码登录。postgres/初始化密码);六、可选:Docker方式快速部署pgAdmin
若系统已安装Docker,可通过容器快速部署pgAdmin(无需配置Apache):
sudo yum install -y docker
sudo systemctl start docker
sudo docker pull dpage/pgadmin4
sudo docker run -p 5050:80 \
-e "PGADMIN_DEFAULT_EMAIL=admin@example.com" \
-e "PGADMIN_DEFAULT_PASSWORD=admin123" \
-d dpage/pgadmin4
http://your_server_ip:5050,使用admin@example.com/admin123登录。注意事项
postgresql.conf中的listen_addresses改为localhost),并通过SSH隧道访问;或使用SSL加密pgAdmin与PostgreSQL的连接。sudo setsebool -P httpd_can_network_connect_db 1