致命:数据库" [DB]"在远程连接上不存在

时间:2016-12-12 16:13:05

标签: postgresql remote-access

我在我们的服务器上运行postgresql数据库。我知道如果您没有指定数据库并且未使用与用户相同的名称创建数据库,则错误很常见。如果我进入服务器,我可以成功访问数据库(DB)。

但是,如果我尝试远程连接,我会得到FATAL: database "[DB]" does not exist,但它确实存在,因为我可以在服务器上访问它。我选择哪个用户名并不重要,我总是收到消息。

连接命令:

psql --host="192.168.1.XXX" --port="5433" --dbname="[DB]" -U postgres

pg_hba.conf的内容:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             192.168.1.1/16          trust

# IPv6 local connections:
host    all             all             ::1/128                 md5

postgresql.conf的内容(摘录):

listen_addresses = '*'
port = 5433
max_connections = 100

ssl = true
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'

\l(缩写)的输出:

  Name   |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
---------+----------+----------+-------------+-------------+-----------------------
  DB     | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 |  postgres=CTc/postgres

\du的输出:

                               List of roles
 Role name   |                   Attributes                   | Member of 
 ------------+------------------------------------------------+-----------
  admin      | Create role, Create DB                         | {}
  <username> | Create role, Create DB                         | {admin}
  postgres   | Superuser, Create role, Create DB, Replication | {}

<username>是我的计算机和服务器上的用户名。

1 个答案:

答案 0 :(得分:0)

问题是在您的 TRegEx.Replace(MessageBody.Text, '<tag-1>.*?</tag-1>', ''); 中,您已将身份验证方法设置为 pg_hba.conf。根据{{​​3}}:

<块引用>

当指定信任身份验证时,PostgreSQL 假定任何可以连接到服务器的人都有权使用他们指定的任何数据库用户名(甚至超级用户名)访问数据库

使用这种身份验证方法似乎在远程访问数据库时隐藏了数据库。

这里的解决方案是使用 PostgreSQL documentation,可以指定为 trustmd5scram-sha-256 以明文形式发送密码。

所以您的 password 应该如下所示:

pg_hba.conf