postgres密码验证失败的原因不明

时间:2018-05-18 00:31:01

标签: postgresql ubuntu-16.04 linuxmint postgresql-9.5

我无法登录并使用已创建的数据库,因为我收到密码或对等身份验证失败。下面概述了我如何设置,如何尝试解决遇到的问题,以及进一步的潜在相关信息。

我正在使用postgresql-9.5,当我下载postgres时,它使用的是不同于我当前尝试访问它的linux mint用户/用户名。以下所有命令均来自新用户/用户名。

我使用以下命令创建了一个新的postgres数据库和一个带密码的新用户:sudo su - postgres

$ psql

postgres=# CREATE DATABASE PostgresDB;

postgres=# CREATE USER PostgresUser WITH PASSWORD 'password';

postgres=# ALTER ROLE PostgressUser SET default_transaction_isolation TO 'read committed'

postgres=# GRANT ALL PRIVILEGES ON DATABASE PostgresDB TO PostgresUser;

然后我开始尝试以多种方式登录:

  • psql -d PostgresDB -U PostgresUser

返回:psql: FATAL: Peer authentication failed for user "PostgresUser"

  • psql -d PostgresDB -U PostgresUser -W和密码输入
  • psql -dpsql -U PostgresUser -h 127.0.0.1 -d PostgresDB和密码输入

每次退货:psql: FATAL: password authentication failed for user "PostgresUser"

我在重置密码之前和之后进行了以上所有尝试登录:ALTER PostgresUser WITH PASSWORD 'password'

我检查了pg_hba.conf文件,其中重要的部分是:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# 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                                     md5
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

2 个答案:

答案 0 :(得分:0)

您是否尝试过查看日志文件?

要解决这个谜题,试试这个:

SELECT usename, usesysid FROM pg_user;

您会注意到用户名是小写的。

这是因为PostgreSQL将SQL语句中的所有字符折叠为小写(SQL标准规定SQL不区分大小写)。

但是,shell区分大小写,因此您尝试使用不存在的用户名进行连接。

一旦您获得了这种体验,您可能会理解为什么始终仅使用 小写字符和数据库对象名中的数字是个好主意

如果您坚持使用大写字母,则必须用双引号括起名称。

答案 1 :(得分:0)

虽然使用小写数据库和用户名重试所有内容无效,但我能够通过其他方法解决问题。

使用此问题的接受答案(How to thoroughly purge and reinstall postgresql on ubuntu?)中列出的说明,我清除了计算机上与PostgresSQL相关的所有内容,然后重新安装。我无法登录: psql -d postgresdb -U postgresdbuserpsql -d postgresdb -U postgresdbuser -W

但是,我能够使用:psql -U postgresdbuser -h 127.0.0.1 -d postgresdb

登录数据库