我已经安装了PostgreSQL 8.4, Postgres客户端和Pgadmin 3。控制台客户端和Pgadmin用户“postgres”身份验证失败。我已经输入用户作为“postgres”和密码“postgres”,因为它以前工作过。但是现在身份验证失败。我以前做过几次都没有这个问题。我该怎么办?发生了什么?

psql -U postgres -h localhost -W
Password for user postgres: 
psql: FATAL:  password authentication failed for user "postgres"
FATAL:  password authentication failed for user "postgres"

当前回答

请记住,如果你安装了两个版本的Postgres,你需要卸载其中一个,在我的情况下,在MacOS上,我通过。dmg安装了一个版本,另一个通过brew安装。

对我来说有用的是使用以下步骤卸载通过.dmg安装的程序

进入/Library/PostgreSQL/13。 uninstall-postgres.app开放。

那就试试

psql postgres

它应该会起作用。

其他回答

古老的线程,但我在2020年浪费了半天时间来处理这个问题,所以这可能会帮助到一些人:再次检查你的postgres端口(在Ubuntu上,它在/etc/postgresql/9.5/main/postgresql.conf)。psql客户端默认使用端口5432,但在我的例子中,服务器运行在端口5433上。解决方案是在psql中指定-p选项(例如psql——host=localhost——username=user -p 5433 mydatabase)。

如果不使用——host参数,psql将通过套接字进行连接,这在我的例子中是可行的,但我的Golang应用程序(使用TCP/IP)却不行。不幸的是,错误消息是用户“user”的密码验证失败,这是误导性的。解决方法是使用url连接字符串连接端口(例如postgres://user:password@localhost:5433/mydatabase)。

我的设置是数字海洋上的Ubuntu 18.04,通过apt-get安装postgres 9.5,所以不知道为什么会发生这种情况。希望这能为您节省一些时间。

进入postgres shell后,输入以下命令

postgres=# \password postgres

输入此命令后,将提示您设置密码,只需设置密码,然后尝试。

作为一个经验法则:你永远不应该为POSTGRES用户设置密码。

如果需要从pgAdmin获得超级用户权限,请创建另一个超级用户。这样,如果超级用户的凭据被泄露,您总是可以ssh到实际的数据库主机并使用手动删除超级用户

sudo -u postgres -c "DROP ROLE superuser;"

以下是我尝试登录的一些组合:

# login via user foo
psql -Ufoo -h localhost

sudo -u postgres psql postgres

# user foo login to postgres db
psql -Ufoo -h localhost -d postgres

对我来说,这太简单了!我在应用程序JAVA Spring中出错,因为我需要记住数据库超级用户,它在安装过程中显示PostgreSQL,在我的情况下,数据源将是postgres。所以,我正确地添加了名称,它工作!