我无法登录并使用已创建的数据库,因为我收到密码或对等身份验证失败。下面概述了我如何设置,如何尝试解决遇到的问题,以及进一步的潜在相关信息。
我正在使用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 -d
,psql -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
答案 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 postgresdbuser
或psql -d postgresdb -U postgresdbuser -W
。
但是,我能够使用:psql -U postgresdbuser -h 127.0.0.1 -d postgresdb