pgAdmin III:数据库访问被拒绝

4
我正在尝试从 pgAdmin III 连接到远程数据库。我已经创建了一个 "New Server Registration"。当我连接到数据库时,我得到了"access to database denied"的错误信息。

enter image description here

我已正确设置了所有内容。这是我的 PostgreSQL 设置:

  • pg_hba.conf >

PostgreSQL 客户端身份验证配置文件

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             postgres                                trust
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host    all             all             192.168.0.0/16          md5
  • postgresql.conf > 我允许所有进入的连接 listen_addresses = '*'

使用SSH,我可以连接到数据库:

[fuiba@test]$ psql -h localhost -p 26888 -d postgres
psql (9.1.11)
Type "help" for help.

postgres=# \l
                             List of databases
     Name     |  Owner  | Encoding | Collate | Ctype |  Access privileges  
--------------+---------+----------+---------+-------+---------------------
 postgres     |  fuiba  | UTF8     | C       | C     | 
 template0    |  fuiba  | UTF8     | C       | C     | =c/fuiba         +
              |         |          |         |       | fuiba=CTc/fuiba
 template1    |  fuiba  | UTF8     | C       | C     | =c/fuiba         +
              |         |          |         |       | fuiba=CTc/fuiba
(3 rows)

我做错了什么?非常感谢任何帮助。谢谢!

ps:我在 Windows 7 上运行 pgAdmin III,PostgreSQL 在 Linux CentOS 上。

2个回答

6

当您通过SSH登录到数据库服务器时,pgAdmin会连接到与之不同的主机上的PostgreSQL。在错误消息中提到的IP地址(以93.39开头)未在您的pg_hba.conf文件中提到。

要么将运行pgAdmin的主机的公共IP地址(以93.39开头)添加到pg_hba.conf中,要么通过SSH隧道进行连接。请注意,在修改pg_hba.conf后重新加载PostgreSQL的配置或重新启动PostgreSQL。


我尝试添加IP 93.39.12.345 但是无法工作。我重新启动了Postgres,但是出现了 psql: could not connect to server: Connection refused .. 的错误。可能我需要将我的IP更改为 93.39.12.345/3293.39.12.345/16 - Mustapha Aoussar
1
引用PostgreSQL精彩的文档:“通过这种方式指定IP地址范围的典型示例包括172.20.143.89/32表示单个主机,或者172.20.143.0/24表示小型网络,或者10.6.0.0/16表示较大的网络。0.0.0.0/0代表所有IPv4地址,而::/0代表所有IPv6地址。”在http://www.postgresql.org/docs/9.3/static/auth-pg-hba-conf.html页面末尾有详细的示例。 - Augustus Kling
非常感谢您,@Augustus。 - Mustapha Aoussar
你怎么解决这个问题?@Fuiba - Mahesh K

1
我曾经遇到过这个问题,通过更改pg_hba.conf中条目的IP掩码来解决,但我不太记得了,而且每个网络的配置都不同。重点是你很可能在其中一个条目中有错误。 在这里,他们甚至指出错误消息是哪个条目有问题的提示。如果他们确实正确,我会检查auth-method(例如,查看我的密码是否作为MD5哈希传递)。
我希望这可以帮助你 =)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接