我在我们的服务器上运行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>
是我的计算机和服务器上的用户名。
答案 0 :(得分:0)
问题是在您的 TRegEx.Replace(MessageBody.Text, '<tag-1>.*?</tag-1>', '');
中,您已将身份验证方法设置为 pg_hba.conf
。根据{{3}}:
当指定信任身份验证时,PostgreSQL 假定任何可以连接到服务器的人都有权使用他们指定的任何数据库用户名(甚至超级用户名)访问数据库
使用这种身份验证方法似乎在远程访问数据库时隐藏了数据库。
这里的解决方案是使用 PostgreSQL documentation,可以指定为 trust
、md5
或 scram-sha-256
以明文形式发送密码。
所以您的 password
应该如下所示:
pg_hba.conf