AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 406606
Accepted
Steve Bennett
Steve Bennett
Asked: 2012-07-11 16:44:23 +0800 CST2012-07-11 16:44:23 +0800 CST 2012-07-11 16:44:23 +0800 CST

Postgres 错误消息:致命:用户“...”的身份验证失败

  • 772

假设您看到这条消息:

FATAL:  Ident authentication failed for user "..."

此错误消息的原因是什么?

linux authentication postgresql
  • 6 6 个回答
  • 145779 Views

6 个回答

  • Voted
  1. Best Answer
    Steve Bennett
    2012-07-11T16:44:23+08:002012-07-11T16:44:23+08:00

    这意味着 Postgres 正在尝试使用 Ident 协议对用户进行身份验证,但不能。Ident auth 自动匹配 Unix 用户名和 Postgres 用户名。它是这样工作的:

    • 您在数据库“db”上具有数据库角色“foo”
    • 您的pg_hba.conf文件(在 中)将“Ident”定义为从特定主机连接的用户连接/etc/postgres-something/main到数据库的协议db
    • 建立连接的 unix 用户名是“foo”
    • 在用户连接的机器上运行的 Ident 服务器确认他们的用户名确实是“foo”

    可能原因及解决方法:

    1. 您尝试连接的机器上没有运行Ident服务器。通过尝试在端口 113 上连接到它来测试它。如果失败,请安装一个 Ident 服务器(例如,sudo apt-get install oidentd)。

    2. 有一个 Ident 服务器,但没有与您尝试连接的名称匹配的数据库角色(上例中的“foo”)。因此,通过以某种方式连接到具有超级用户权限的数据库来创建它并执行CREATE ROLE foo. 或者将条目添加到/etc/postgresql/.../main/pg_ident.conf(或/var/lib/pgsql/12/data或任何地方)。

    3. 也许 shell 用户名与数据库角色不匹配。您可以通过在连接进行时连接到 Ident 服务器并传递正确的端口号来对此进行测试。

    4. 也许您实际上想使用密码而不是 Ident 进行连接。适当编辑pg_hba.conf文件。例如,更改:

      host all all 127.0.0.1/32 ident
      

    至

        host all all 127.0.0.1/32 md5
    

    请务必在更新pg_hba.conf文件后重新启动 Postgres。您可以通过发出以下命令来执行此操作:

        sudo service postgresql-12 restart
       
    
    • 59
  2. jacktrades
    2012-09-11T07:21:41+08:002012-09-11T07:21:41+08:00

    不确定原因,但这对我来说是固定的:

    在pg_hba.conf

    更改为:

    托管所有所有 127.0.0.1/32 md5

    确切错误:Caused by: org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"

    • 9
  3. XåpplI'-I0llwlg'I -
    2014-07-15T03:11:28+08:002014-07-15T03:11:28+08:00

    在 CentOS 上,将以下行添加到/var/lib/pgsql/9.3/data/pg_hba.conf:

    host all all 127.0.0.1/32 trust
    

    并注释掉其他条目。

    当然,这个设置并不安全,但如果你只是像我一样在开发虚拟机上乱搞,那可能没问题……

    • 4
  4. KulJeet
    2020-04-09T23:00:18+08:002020-04-09T23:00:18+08:00

    对于 Centos 7,将pg_hba.conf更改为以下内容:

    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    
    # "local" is for Unix domain socket connections only
    local   all             all                                     peer
    # IPv4 local connections:
    #host    all             all             127.0.0.1/32            ident
    host    all             all             127.0.0.1/32            md5
    # IPv6 local connections:
    #host    all             all             ::1/128                 ident
    host    all             all             ::1/128                 md5
    # Allow replication connections from localhost, by a user with the
    # replication privilege.
    #local   replication     all                                     peer
    #host    replication     all             127.0.0.1/32            ident
    #host    replication     all             ::1/128                 ident
    
    • 2
  5. despotbg
    2021-05-28T05:55:26+08:002021-05-28T05:55:26+08:00

    尝试使用 -h 127.0.0.1而不是 -h localhost

    • 1
  6. Alan Thompson
    2014-07-26T16:59:51+08:002014-07-26T16:59:51+08:00

    如果您还没有尝试过,请查看您的 pg_hba.conf 文件。它将被命名为 /var/lib/pgsql/9.3/data/pg_hba.conf (Fedora 20);您可能必须使用“find / -name pg_hba.conf”来找到它。

    在文件底部,将“METHOD”值更改为“trust”以进行本地测试(有关完整信息,请参阅 postgres 文档)。重新启动机器以确保一切都开始干净并读取新参数。

    希望这会治愈你的痛苦。它使用 PostgreSQL 9.3 解决了我在 Fedora 20 上的问题。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve