Postgres 密码验证失败
Postgres Password Authentication Failed
我是 运行 WSL Ubuntu 18.04 上的 Postgres 12 数据库(Windows Linux 的子系统)。
我可以毫无问题地使用 sudo -u postgres psql
连接到数据库,并且可以查看和创建新的数据库和用户。
我使用 CREATE USER myusername WITH PASSWORD 'mypassword';
和 psql returns CREATE ROLE
创建了一个新用户。
但是,当我尝试使用我在 psql -h localhost -U myusername
中设置的密码作为该用户登录时,我得到 psql: error: could not connect to server: FATAL: password authentication failed for user "myusername"
。
我已经尝试使用 ALTER USER myusername WITH PASSWORD 'newpassword';
和 psql returns ALTER ROLE
多次更改此用户的密码。
我找到的一个常见的解决方案,比如this post,就是修改pg_hba.conf
文件。
我的 pg_hba.conf
文件是:
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 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.
local replication all peer
host replication all 127.0.0.1/32 md5
我试过将第一行和第二行都修改为md5
和ident
,每次都重新启动postgres服务器,但无济于事。我也试过完全卸载和重新安装 Postgres,这也不起作用。
有什么我遗漏的吗?我还能做些什么来尝试解决这个问题?谢谢!
仔细检查默认端口号上是否有另一个 PostgreSQL 实例 运行。
为了将来在 Linux 的 Windows 子系统上遇到此问题的人参考,我使用命令提示符搜索 运行 服务并查看 Postgres 服务是否是 运行 sc queryex type=service state=all | find /i "postgres"
。
这返回:
SERVICE_NAME: postgresql-x64-9.5
DISPLAY_NAME: postgresql-x64-9.5 - PostgreSQL Server 9.5
然后我可以使用 sc stop
和服务名称来停止服务:
sc stop postgresql-x64-9.5
这解决了密码验证问题。
我是 运行 WSL Ubuntu 18.04 上的 Postgres 12 数据库(Windows Linux 的子系统)。
我可以毫无问题地使用 sudo -u postgres psql
连接到数据库,并且可以查看和创建新的数据库和用户。
我使用 CREATE USER myusername WITH PASSWORD 'mypassword';
和 psql returns CREATE ROLE
创建了一个新用户。
但是,当我尝试使用我在 psql -h localhost -U myusername
中设置的密码作为该用户登录时,我得到 psql: error: could not connect to server: FATAL: password authentication failed for user "myusername"
。
我已经尝试使用 ALTER USER myusername WITH PASSWORD 'newpassword';
和 psql returns ALTER ROLE
多次更改此用户的密码。
我找到的一个常见的解决方案,比如this post,就是修改pg_hba.conf
文件。
我的 pg_hba.conf
文件是:
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 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.
local replication all peer
host replication all 127.0.0.1/32 md5
我试过将第一行和第二行都修改为md5
和ident
,每次都重新启动postgres服务器,但无济于事。我也试过完全卸载和重新安装 Postgres,这也不起作用。
有什么我遗漏的吗?我还能做些什么来尝试解决这个问题?谢谢!
仔细检查默认端口号上是否有另一个 PostgreSQL 实例 运行。
为了将来在 Linux 的 Windows 子系统上遇到此问题的人参考,我使用命令提示符搜索 运行 服务并查看 Postgres 服务是否是 运行 sc queryex type=service state=all | find /i "postgres"
。
这返回:
SERVICE_NAME: postgresql-x64-9.5
DISPLAY_NAME: postgresql-x64-9.5 - PostgreSQL Server 9.5
然后我可以使用 sc stop
和服务名称来停止服务:
sc stop postgresql-x64-9.5
这解决了密码验证问题。