更改Postgres超级用户的认证方法。

6

我正在使用psql连接Debian 10上的PostgreSQL数据库。我尝试以postgres用户身份连接到默认的postgres数据库。默认情况下,这使用“peer”身份验证方法,不需要密码。

如果我使用“peer”身份验证登录并使用以下命令设置密码:

ALTER USER postgres WITH PASSWORD 'myPassword';

查询成功执行,但是当我编辑pg_hba.conf文件以更改身份验证方法时,发生了以下情况:
local    all            postgres                    peer

致:

local    all            postgres                    scram-sha-256

当我重启服务器时,会出现以下错误:

~$ sudo -u postgres psql postgres
Password for user postgres:
psql: FATAL: password authentication failed for user "postgres"
~$

有人知道如何做这个吗?

3个回答

4

要更改PostgreSQL中的身份验证方法:

  1. 打开终端窗口

  2. 切换到postgres二进制文件所在目录

示例:cd /usr/local/pgsql/bin

注意:根据安装环境,二进制文件目录的路径可能会有所不同。

  1. 键入su – postgres并按Enter。这将更改登录为postgres用户。

  2. 从bin目录键入./psql

  3. 键入:ALTER USER your_username password 'new_password';并按Enter。应显示ALTER ROLE

  4. 键入\q并按Enter

  5. 打开/path_to_data_directory/pg_hba.conf

示例:/etc/postgresql/11/main/pg_hba.conf

  1. 修改配置文件底部的行以类似以下示例之一的方式设置。

注意:您可能只需要将单词trust更改为md5。该行或行应已存在。

host     all        postgres                                   peer 
host     all        your_username      your.ip your.subnet     md5
  1. 保存更改

  2. 使用systemctl restart postgresql.service重新启动PostgreSQL服务


2
在分配密码之前,您可能需要将password_encryption设置为“scram-sha-256”。否则,您存储的密码是以md5格式存储的,这样的密码不能用于当pg_hba.conf调用“scram-sha-256”时进行登录。 password_encryption的默认设置仍然是md5。它将在v14中更改为“scram-sha-256”。
发送到未经身份验证的用户的错误消息是故意模糊的。服务器日志文件中的错误消息可能会说“DETAIL:用户“postgres”没有有效的SCRAM secret。”(如果没有,请忽略此答案,并编辑您的问题告诉我们它说了什么)

1
感谢添加这个错误信息(用户“postgres”没有有效的SCRAM密钥)。这帮助搜索引擎将我引导到这里 :-) - leole

0

首先在shell中需要切换到“postgres”用户,你上面没有正确执行:

sudo su - postgres

然后你可以使用peer auth执行以下操作: psql -d postgres -U postgres

同时建议你为postgres SQL用户设置密码:

\password postgres 并将认证方法更改为“md5”,而不是“peer”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接