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 postgres
login并使用刚才设置的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