【发布时间】:2020-08-08 00:51:30
【问题描述】:
问题
无论我尝试对我的 pg_hba.conf` 文件进行什么更新,如果说明了我的 IP 地址,postgres 似乎都不允许我通过命令行进行连接。如果我将地址设置为任何地方运行我的用户,那么它可以正常工作。
设置
- 我正在从 google vm 运行我的 postgres 数据库。
- 我已为来自我的 IP 地址在 tcp 端口 5432 上的传入流量启用了防火墙白名单。
- 我在测试我的 mariadb 数据库时设置了相同的东西,我可以毫无问题地连接到该数据库,所以我的服务器防火墙应该没有问题。
错误信息
user@Work-Station-A:~$ psql -U user -h <google vm public IP> -p 5432 cheese psql: could not connect to server: Connection refused Is the server running on host "<google vm public IP>" and accepting TCP/IP connections on port 5432?
/etc/postgresql/10/main/pg_hba.conf
local all postgres peer # TYPE DATABASE USER ADDRESS METHOD host all user <my ip address> md5 # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5
/etc/postgresql/10/main/postgresql.conf
listen_addresses = '*' # what IP address(es) to listen on; port = 5432 ssl = on
我注意到了什么
当我在 pg_hba.conf 文件中删除我的“用户”IP 连接的行时,我可以看到端口正在侦听:
user@work-server:~$ ss -nlt | grep 5432 LISTEN 0 128 0.0.0.0:5432 0.0.0.0:* LISTEN 0 128 [::]:5432 [::]:*
但是如果我把线路放回去,当我检查 5432 上的监听端口时,什么都不会返回。如果我运行我的 pg_hba.conf` 是
host all user 0.0.0.0/0 md5
然后它会听,我可以毫无问题地连接到我的数据库。出于某种原因,我的 IP 地址似乎导致端口关闭,但我无法找出原因。有人可以确认我是否做错了什么或需要修改以解决这个问题,因为我不希望我的数据库可以从任何地方访问?
【问题讨论】:
-
在将地址添加到 pg_hba.conf 文件后检查日志并重新启动 Postgresql 进程。如果没有进程正在侦听端口 5432,则您的 postgres 启动不正确。
-
@ex4 我可以确认每次使用
sudo service postgresql restart修改文件时都会重新启动postgres。您能否确认我如何检查日志以及我应该寻找什么?抱歉,如果这是一个基本问题,我对设置自己的 sql 数据库很陌生