设置

步骤一:修改 postgresql.conf(允许数据库监听外网)

PostgreSQL 默认只监听本地连接(localhost),如果不修改,外网的 pgAdmin 连进来时,数据库会直接拒绝,表现出来就是超时。

1.  在远程服务器上,找到并打开 postgresql.conf 文件(通常在 /var/lib/pgsql/data/ 或 /etc/postgresql/ 目录下):

sudo find / -name “postgresql.conf”
# 找到路径后编辑它,例如:
sudo nano /var/lib/pgsql/data/postgresql.conf

2. 找到 listen_addresses 这一行(默认可能是被 # 注释掉的,或者写着 ‘localhost’)。

3. 将其修改为监听所有 IP:

listen_addresses = ‘*’ # 允许所有 IP 访问

4. 保存并退出。

步骤二:修改 pg_hba.conf(授予外网访问权限)

这是 PostgreSQL 的自带防火墙(白名单机制)。即使端口开了、监听也开了,如果你的本地 IP 不在它的白名单里,依然会超时或被拒。

1. 在同一个目录下,找到并打开 pg_hba.conf 文件:

sudo nano /var/lib/pgsql/data/pg_hba.conf

2. 滚动到文件的最底部,添加一行,允许任何 IP 通过密码认证访问(或者把 0.0.0.0/0 换成你本地的固定公网 IP,这样更安全):

# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 scram-sha-256

注意:如果你的 PostgreSQL 版本较旧(如 v12 之前),最后的 scram-sha-256 建议写成 md5。

3. 保存并退出。

步骤三:重启 PostgreSQL 服务(让配置生效)

# 根据你的系统版本和安装方式,运行以下命令之一:
sudo systemctl restart postgresql
# 或者如果是 CentOS/TencentOS 上的带有版本号的服务:
sudo systemctl restart postgresql-15

步骤四:放行端口

连接

这里使用的HeidiSQL

第一步:在 HeidiSQL 中连接远程 PostgreSQL

1.  打开 HeidiSQL,点击左下角的 新建 (New)。

2. 关键设置(左侧配置面板):

网络类型 (Network type): 点击下拉菜单,千万不要选默认的 MySQL,将其切换为 PostgreSQL (TCP/IP)。

主机名/IP (Hostname / IP): 填写你远程服务器的公网 IP。

用户 (User): 填写 postgres(或者你的远程用户名)。

密码 (Password): 填写你的远程数据库密码。

端口 (Port): 默认 5432。

数据库 (Databases): 填写或点击下拉菜单选择你要连接的远程数据库名。

3. 点击右下角的 打开 (Open)。如果顺利,你就能看到远程的 PostgreSQL 表结构了。

注:

PostgreSQL 和 MySQL 最大的不同在于:一个“实例”下可以有很多个独立的“数据库”。pgAdmin 默认会把所有的数据库都列出来;但 HeidiSQL 默认只会加载你在登录时指定的那个数据库。

如果你在登录 HeidiSQL 时没有特别指定,它就会自动连进 PG 自带的、空无一物的默认库 postgres 中,导致你看不到自己在 pgAdmin 里创建的那个真正的工作数据库(比如叫 my_project_db)。

作者 admin

百度广告效果展示