关于ubuntu:Postgresql:用户“postgres”的密码验证失败

Postgresql: password authentication failed for user “postgres”

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

1
2
3
4
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上没有设置db密码。这意味着,您只能使用postgresOS用户帐户登录该帐户。

假设您可以在该框上访问root

1
sudo -u postgres psql

如果由于database"postgres" does not exists错误而失败,那么您很可能不在ubuntu或debian服务器上:—),在这种情况下,只需将template1添加到命令:

1
sudo -u postgres psql template1

如果这些命令中的任何一个失败并出现错误psql: FATAL: password authentication failed for user"postgres",则检查文件/etc/postgresql/8.4/main/pg_hba.conf:必须有这样的行作为第一个非注释行:

1
LOCAL   ALL         postgres                          ident

对于更新版本的PostgreSQL,ident实际上可能是peer。这也可以。

psqlshell中,您可以给db用户postgres一个密码:

1
ALTER USER postgres PASSWORD 'newPassword';

您可以通过键入ctrld或使用命令\q退出psqlshell。

现在,您应该能够给pgadmin一个有效的db超级用户密码,它也会很高兴。-)


员工的回答是正确的,但是如果您希望进一步自动化,可以做到:

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

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

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

$ sudo passwd postgres


这很令人沮丧,上面的大多数答案都是正确的,但没有提到必须在pg_hba.conf文件中的更改生效之前重新启动数据库服务。

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

1
LOCAL ALL postgres ident

然后作为根重新启动(在CentOS上,类似于ServiceServicePostgreSQL-9.2 Restart)现在,您应该能够作为用户postgres访问数据库。

1
2
3
4
5
$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文件重新设置为默认值。


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

切换到Postgres用户

1
# su - postgres

登录到PSQL

1
# psql

希望有所帮助


尽量不要使用-w参数,并将密码留空。有时创建用户时没有密码。

如果不起作用,请重置密码。有几种方法可以做到这一点,但这在许多系统上都有效:

1
2
3
4
$ su root
$ su postgres
$ psql -h localhost
> ALTER USER postgres WITH password 'YourNewPassword';


对于那些第一次使用它并且没有关于密码是什么的信息的人,他们可以遵循以下步骤(假设您在Ubuntu上):

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

    1
     sudo vi pg_hba.conf

    2.编辑下一行

    1
     LOCAL   ALL             postgres                                peer

    1
     LOCAL   ALL             postgres                                trust
  • 重新启动服务器

    1
      sudo service postgresql restart
  • 最后,您无需密码即可登录,如图EFinally you can login without need of a password as shown in the figure所示。

  • 更多信息请参阅此处


    经验法则是:永远不要为Postgres用户设置密码。

    如果需要从pgadmin访问超级用户,请创建另一个超级用户。这样,如果该超级用户的凭据受到破坏,则可以始终使用ssh将其发送到实际的数据库主机中,并使用

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


    我也有类似的问题。Ubuntu让我用超级用户的任何密码登录控制台。除非我在psql line命令中与-h localhost连接。

    我也注意到"localhost:8080/myjspistologin"-显示:致命的:用户"user"的身份验证错误。

    pg_hba.conf正常。

    我注意到有两个版本的Postgres运行在同一个服务中。

    已解决-正在卸载Inutil版本。


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

    1
    2
    3
    4
    5
    6
    7
    # 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

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

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


    我希望这能在短时间内帮助你。您可以使用下面的命令更改PostgresSQL的密码。

    命令

    sudo-u postgres psql

    接下来你可以更新密码

    命令

    更改用户postgres密码'your_new_password';