Postgresql:用户密码authentication失败“postgres”

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

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在Ubuntu上没有设置数据库密码。 这意味着,只有使用postgres OS用户帐户才能login到该帐户。

假设您可以在框中拥有root访问权限:

 sudo -u postgres psql 

如果database "postgres" does not exists错误,那么你很可能不在Ubuntu或Debian服务器上:-)在这种情况下,只需将template1添加到命令:

 sudo -u postgres psql template1 

如果这些命令中的任何一个出现错误psql: FATAL: password authentication failed for user "postgres"那么检查文件/etc/postgresql/8.4/main/pg_hba.conf :必须有这样的一行,评论专栏:

 local all postgres ident 

对于较新版本的PostgreSQL, ident实际上可能是peer 。 这也没关系。

psql shell里面,你可以给DB用户 postgres一个密码:

 ALTER USER postgres PASSWORD 'newPassword'; 

您可以通过键入Ctrl D或使用命令\q离开psql shell。

现在你应该可以给pgAdmin一个DB超级用户的有效密码,它也会很开心。 🙂

工作人员的反应是正确的,但如果你想进一步自动化可以这样做:

$ sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'postgres';"

完成! 您保存了User = postgres和password = postgres。

如果你没有密码的用户postgres Ubuntu的做:

$ sudo passwd postgres

这是令人沮丧的,上面的答案大部分是正确的,但是他们没有提到你必须重新启动数据库服务,然后才能使pg_hba.conf文件中的更改生效。

所以如果你做了上面的事情

本地所有postgres身份

然后重新启动作为根目录(在centos其像service service postgresql 9.2重新启动)现在你应该能够访问数据库作为用户postgres

$ psql psql(9.2.4)键入“help”获取帮助。

Postgres的=#

希望这为新的postgres用户增加了信息

如果您试图以postgres用户身份loginpostgres shell,那么您可以使用以下命令。

切换到postgres用户

 # su - postgres 

login到psql

 # psql 

希望有所帮助

编辑pg_hba.conf文件,例如用sudo emacs /etc/postgresql/9.3/main/pg_hba.conf

将所有authentication方法更改为trust 。 更改“postgres”用户的Unix密码。 重新启动服务器。 用psql -h localhost -U postgreslogin并使用刚才设置的Unix密码。 如果有效,可以将pg_hba.conf文件重新设置为默认值。

尝试不使用-W参数并将密码留空。 有时用户是使用无密码创build的。

如果这不起作用重置密码。 有几种方法可以做到这一点,但是这可以在很多系统上运行:

 $ su root $ su postgres $ psql -h localhost > ALTER USER postgres with password 'YourNewPassword'; 

作为一个经验法则: 您永远不应该为POSTGRES USER设置一个密码

如果您需要从pgAdmin访问超级用户,请创build另一个超级用户。 那样的话,如果这个超级用户的凭证被破坏了,你总是可以ssh进入实际的数据库主机并手动删除超级用户

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

我只是想补充一点,你也应该检查你的密码是否过期。

有关详细信息,请参阅Postgres密码validation失败 。

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

 # 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