繁体   English   中英

无法连接到PostgreSQL“角色不存在”

[英]Can't connect to postgresql “Role does not exist”

我正在尝试从Docker容器连接到postgresql,但出现以下错误:

2019-03-02 20:10:45.218 MSK [2777] spectrum_user@spectrum_db FATAL:  password authentication failed for user "spectrum_user"
2019-03-02 20:10:45.218 MSK [2777] spectrum_user@spectrum_db DETAIL:  Role "spectrum_user" does not exist.
    Connection matched pg_hba.conf line 100: "host  all     all     172.17.0.0/16       md5"

看起来好像成功连接了但认证失败。 而且我不知道为什么。 我可以使用psql连接到db。 这个角色肯定存在。

我正在使用Ubuntu 18.04 LTS

有人有建议吗?

更新:看来我有两个版本的postgresql同时运行,并且我尝试连接到错误的postgresql实例。

您需要编辑pg_hba.conf。

在我安装的Ubuntu 18.04上,这是路径:

/etc/postgresql/10/main/pg_hba.conf

你可以试试:

sudo vim /etc/postgresql/10/main/pg_hba.conf

用您选择的文本编辑器替换vim。 如果没有使用此命令打开文件(文件中已经有设置),则需要在/ etc / postgresql中进行浏览以找到pg_hba.conf文件。 尝试:

find -name pg_hba.conf

找到并打开文件后,编辑以下行:

在注释# IPv4 local connections:

host    all             all             172.17.0.1/24           trust

现在,您需要再编辑一个文件:

sudo vim /etc/postgresql/10/main/postgresql.conf

将任何listen_addresses引用更改为:

listen_addresses = '*'

保存以上所有更改后,运行以下命令:

sudo service postgresql restart

注意:此配置对于生产环境而言并不安全,因此您需要配置防火墙并更改其中一些设置以使其安全。 这仅用于开发。

现在,只要您为postgres URL指向主机操作系统的IP地址,并且该用户存在于系统上并且该角色存在于数据库中,就可以从docker容器连接到主机数据库。 我也总是绑定HTTP端口,因此这可能会起作用。 我需要查看您的docker文件以提供有关此信息。

您还需要允许防火墙上的端口:

sudo ufw allow from 172.17.0.1/24 to any port 5432 

如果您不关心安全性,但是以上操作仍然无效,请打开端口5432。请注意,打开端口可能不安全。

看来我有两个版本的postgresql同时运行,并且试图连接到错误的postgresql实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM