[英]FATAL: role “postgres” does not exist; I can see postgreSQL running and can use psql to connect to tables
[英]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.