当前位置: 首页>>技术教程>>正文


PostgreSQL:用户“postgres”的密码身份验证失败

, ,

问题描述

我已经安装了PostgreSQL 8.4,Postgres客户端和Pgadmin3。对于控制台客户端和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在Ubuntu上没有设置数据库密码。这意味着您只能使用postgres OS用户帐户登录到该帐户。

假设您在包装盒上具有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 程序内,可以为数据库用户postgres设置密码:

ALTER USER postgres PASSWORD 'newPassword';

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

现在您应该能够为pgAdmin提供一个数据库超级用户的有效密码,这也将很高兴。 🙂

次佳答案

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

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

做完了!您保存了用户= postgres和密码= postgres。

如果您没有User postgres ubuntu的密码,请执行以下操作:

$ sudo passwd postgres

第三种答案

令人沮丧的是,以上大多数答案都是正确的,但是它们没有提及您必须重新启动数据库服务才能使pg_hba.conf文件中的更改生效。

因此,如果您如上所述进行更改:

local all postgres ident

然后以root身份重新启动(在centos上类似service service postgresql-9.2 restart),现在您应该能够以用户postgres的身份访问数据库

$psql
psql (9.2.4)
Type "help" for help.

postgres=# 

希望这可以为新的postgres用户添加信息

第四种答案

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

将所有身份验证方法更改为trust。更改”postgres”用户的Unix密码。重新启动服务器。使用psql -h localhost -U postgres登录并使用刚刚设置的Unix密码。如果可行,您可以将pg_hba.conf文件re-set设置为默认值。

第五种答案

对于那些第一次使用它并且不知道密码是什么的人,可以按照以下步骤操作(假设您使用的是ubuntu):

  1. /etc/postgresql/9.x/main中打开文件pg_hba.conf

     sudo vi pg_hba.conf 
    

    2.编辑以下行

     local   all             postgres                                peer
    

     local   all             postgres                                trust
    
  2. 重新启动服务器

      sudo service postgresql restart
    
  3. 最后,您无需密码即可登录,如图所示

Ref here for more info

第六种答案

如果您尝试以postgres用户身份登录postgres shell,则可以使用以下命令。

切换到postgres用户

# su - postgres

登录到psql

# psql

希望能有所帮助

第七种答案

尝试不使用-W参数,并将密码保留为空白。有时,用no-password创建用户。

如果这样不起作用,请重置密码。有几种方法可以执行此操作,但这在许多系统上都有效:

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

第八种答案

根据经验:您永远不要为POSTGRES用户设置密码。

如果您需要pgAdmin的超级用户访问权限,请设置另一个超级用户。这样,如果该超级用户的凭据受到破坏,则您始终可以将ssh放入实际的数据库主机中,并使用以下命令手动删除该超级用户

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

第九种答案

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

postgres=# \password postgres

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10060.html,未经允许,请勿转载。