【问题标题】:Change authentication method for postgres superuser更改 postgres 超级用户的身份验证方法
【发布时间】:2021-05-26 19:35:21
【问题描述】:

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

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

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"
~$

有人知道怎么做吗?

【问题讨论】:

    标签: postgresql debian psql


    【解决方案1】:

    在 PostgreSQL 中更改身份验证方法:

    1. 打开终端窗口

    2. 进入postgres bin目录

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

    注意:根据您的安装环境,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】:

      您需要首先在 shell 中更改为“postgres”用户,但您在上面没有正确操作:

      sudo su - postgres

      然后您可以作为对等身份验证执行以下操作: psql -d postgres -U postgres

      另外建议你为 postgres sql 用户设置密码:

      \密码 postgres & 将身份验证方法更改为“md5”,而不是“peer”。

      【讨论】:

        【解决方案3】:

        在分配密码之前,您可能需要将 password_encryption 设置为“scram-sha-256”。否则,你把密码保存为md5格式,这样的密码在pg_hba.conf调用“scram-sha-256”时无法登录。

        password_encryption 的默认设置仍然是 md5。它将在 v14 中更改为“scram-sha-256”。

        发送给未经身份验证的用户的错误消息故意含糊不清。服务器日志文件中的错误消息可能会显示DETAIL: User "postgres" does not have a valid SCRAM secret.(如果没有,则忽略此答案,并编辑您的问题以告诉我们它的含义)

        【讨论】:

        • 感谢您添加此错误消息 (User "postgres" does not have a valid SCRAM secret)。这有助于搜索引擎在这里引导我:-)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-31
        • 2017-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多