温馨提示×

ubuntu下pgadmin如何远程连接

小樊
43
2025-11-08 11:42:20
栏目: 智能运维

Ubuntu下pgAdmin远程连接PostgreSQL的完整步骤

1. 安装PostgreSQL与pgAdmin

首先在Ubuntu服务器上安装PostgreSQL数据库和pgAdmin管理工具:

sudo apt update
sudo apt install postgresql pgadmin4

安装完成后,PostgreSQL服务会自动启动;若未启动,可通过sudo systemctl start postgresql手动启动。

2. 配置PostgreSQL允许远程连接

要允许远程访问,需修改PostgreSQL的两个核心配置文件:

(1) 修改postgresql.conf(开启远程监听)

找到配置文件路径(版本号可能不同,如/etc/postgresql/14/main/postgresql.conf),编辑文件:

sudo nano /etc/postgresql/<版本号>/main/postgresql.conf

找到#listen_addresses = 'localhost',将其修改为:

listen_addresses = '*'  # 允许所有IP连接;如需限制特定IP,可替换为服务器IP(如192.168.1.100)

保存并退出(Ctrl+OEnterCtrl+X)。

(2) 修改pg_hba.conf(配置访问权限)

编辑pg_hba.conf文件(路径同上):

sudo nano /etc/postgresql/<版本号>/main/pg_hba.conf

在文件末尾添加以下行,允许指定IP段(如0.0.0.0/0为所有IP,建议替换为客户端实际IP)通过密码验证连接:

host    all             all             0.0.0.0/0               md5

保存并退出。

(3) 重启PostgreSQL服务

使配置生效:

sudo systemctl restart postgresql

3. 配置防火墙允许5432端口

PostgreSQL默认使用5432端口,需确保防火墙放行该端口:

(1) 使用ufw(Ubuntu默认防火墙)
sudo ufw allow 5432/tcp
sudo ufw reload
(2) 使用iptables(传统防火墙)
sudo iptables -A INPUT -p tcp --dport 5432 -j ACCEPT
sudo service iptables save  # 保存规则(部分系统可能需要)
(3) 使用firewalld(较少见于Ubuntu)
sudo firewall-cmd --zone public --add-port 5432/tcp --permanent
sudo firewall-cmd --reload

4. 配置pgAdmin远程连接

在Ubuntu本地(或远程客户端)启动pgAdmin,步骤如下:

  1. 打开pgAdmin(通过应用菜单或终端命令pgadmin4);
  2. 右键左侧Servers节点,选择Create → Server…
  3. General选项卡:输入服务器名称(如“Remote PostgreSQL Server”);
  4. Connection选项卡:填写以下信息:
    • Host name/address:远程PostgreSQL服务器的IP地址或域名;
    • Port5432(默认端口);
    • Maintenance databasepostgres(默认数据库);
    • Username:PostgreSQL用户名(如postgres);
    • Password:该用户的密码(需与步骤2中设置的密码一致);
  5. 点击Save保存配置,双击服务器节点即可测试连接。

5. 安全注意事项

  • 限制IP范围:将pg_hba.conf中的0.0.0.0/0替换为客户端实际IP(如192.168.1.100/32),避免暴露给所有网络;
  • 使用强密码:确保PostgreSQL用户密码复杂(包含大小写字母、数字、符号);
  • 定期更新:保持PostgreSQL、pgAdmin和系统为最新版本,修复安全漏洞;
  • 启用SSL(可选):通过配置postgresql.conf中的ssl = on和证书,加密远程连接数据。

完成以上步骤后,pgAdmin即可远程连接至Ubuntu服务器上的PostgreSQL数据库。若连接失败,需检查配置文件语法、防火墙规则及网络连通性(如ping服务器IP、telnet端口5432)。

0