首页 > 解决方案 > 由于身份验证失败,无法访问 psql

问题描述

我正在尝试使用 postgresql 的 django 教程,但我在设置数据库时遇到了一些问题。我确实使用更改了 postgres 密码,我可以使用orsudo passwd postgres登录到 postgres 帐户,但之后我无法使用. 它给了我以下错误:su postgressudo su - postgrespqsl

psql: FATAL:  password authentication failed for user "postgres"

我也更改了pg_hba.conf文件(从对等到 md5),但它没有改变任何东西。我从未使用过 postgresql,这是我第一次使用它,所以如果您需要任何其他信息,请询问我。

标签: postgresql

解决方案


sudo passwd postgres适用于系统用户 postgres,这就是为什么您可以 su 到系统用户 postgres shell。当您执行 psql -U postgres 时,您将作为数据库用户 postgres 登录。那是一个不同的帐户。按照惯例,Postgres 服务器运行的系统用户通常称为 postgres。同样按照惯例,Postgres 服务器数据库“root/superuser”是服务器运行的用户名,所以通常也是 postgres。如果您想使用密码作为 postgres 用户登录到服务器,您需要为数据库用户 postgres 创建一个密码。为此,我将查看 pg_hba.conf 中的本地(不是本地主机)行是否设置为trust. 如果没有将其设置为,然后执行:

psql -U postgres -d postgres

不要指定-h. 这将通过本地套接字连接您。那么你也能 :

https://www.postgresql.org/docs/12/sql-alteruser.html

ALTER USER postgres WITH PASSWORD 'your_password'

这将为postgres用户创建一个密码。

仅供参考,您无需登录系统用户 postgres 帐户即可在数据库中以 postgres 用户身份工作。您所要做的就是指定-U postgres任何 Postgres 客户端程序,psql, pg_dump, etc. 这也意味着您可以在远程服务器上作为 postgres 数据库用户工作。


推荐阅读