postgresql - 由于身份验证失败,无法访问 psql
问题描述
我正在尝试使用 postgresql 的 django 教程,但我在设置数据库时遇到了一些问题。我确实使用更改了 postgres 密码,我可以使用orsudo passwd postgres
登录到 postgres 帐户,但之后我无法使用. 它给了我以下错误:su postgres
sudo su - postgres
pqsl
psql: FATAL: password authentication failed for user "postgres"
我也更改了pg_hba.conf
文件(从对等到 md5),但它没有改变任何东西。我从未使用过 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 数据库用户工作。
推荐阅读
- html - 如何将菜单的背景颜色更改为透明?
- excel - vba 图表从一张纸复制到另一张纸。(希望使用工作表索引参考而不是名称)
- tensorflow-serving - Tensorflow Serving,在线预测:如何构建一个接受“image_bytes”作为输入张量名称的签名定义?
- java - 我如何解决 SpringWebFlow + SpringBoot 中的静态资源?
- amazon-web-services - AWS Comprehend 自定义分类作业输出的行数多于输入行数
- c# - C# - 创建一个递归函数来计算列表的总和。是否可以仅使用列表作为唯一参数?
- javascript - 如何使用函数动态设置img src
- r - 如何根据不同数据框的两个 ID 列的匹配从数据框列中提取值?
- python - 二进制图像上的 Tesseract OCR
- plsql - 如何为游标的选择语句中使用的失败条件引发异常