当前位置: 首页 > 知识库问答 >
问题:

获取错误:用户“postgres”的对等身份验证失败,当尝试让pgsql与rails一起工作时

景子安
2023-03-14

我得到了一个错误:

FATAL: Peer authentication failed for user "postgres"

当我尝试让postgres与Rails一起工作时。

下面是我的pg_hba.confdatabase.yml以及完整跟踪的转储。

我在pg_hba中将身份验证更改为md5,并尝试了不同的方法,但似乎都行不通。

我还尝试按照Rails3.2创建一个新用户和数据库,致命的是:用户的对等身份验证失败(pg::error)

但它们不会出现在pgadmin上,甚至在我运行sudo-u postgres psql-l时也不会出现。

知道我哪里错了吗?

共有2个答案

松英叡
2023-03-14

安装Postgresql之后,我执行了以下步骤。

>

  • 打开Ubuntu的pg_hba.conf文件,它将位于/etc/postgresql/9.x/main中,并更改此行:

    local   all             postgres                                peer

    local   all             postgres                                trust

    重新启动服务器

    $ sudo service postgresql restart
    

    登录psql并设置密码

    $ psql -U postgres
    db> ALTER USER postgres with password 'your-pass';
    

    最后将pg_hba.conf

    local   all             postgres                                trust

    local   all             postgres                                md5

    重新启动postgresql服务器后,您可以使用自己的密码访问它

    身份验证方法详细信息:

    信任-任何可以连接到服务器的人都有权访问数据库

    对等--使用客户端的操作系统用户名作为数据库用户名访问它。

    md5-基于密码的身份验证

    在此进行进一步的参考查询

  • 乔望
    2023-03-14

    问题仍然是您的pg_hba.conf文件(/etc/postgresql/9.1/main/pg_hba.conf*)。

    这一行:

    local   all             postgres                                peer
    

    应该是:

    local   all             postgres                                md5
    

    *如果找不到此文件,运行locate pg_hba.conf应该会显示文件的位置。

    修改此文件后,不要忘记重新启动PostgreSQL服务器。如果您在Linux上,那么这将是sudo service postgresql restart

    以下是根据官方的PostgreSQL认证方法文档对这两个选项的简要描述。

    对等身份验证方法的工作方式是从内核获取客户端的操作系统用户名,并将其用作允许的数据库用户名(具有可选的用户名映射)。此方法仅在本地连接上受支持。

    基于口令的身份验证方法有md5和Password。除了跨连接发送密码的方式(分别为MD5散列和明文)之外,这些方法的操作类似。

    如果你对密码“嗅探”攻击感到担忧,那么md5是首选。如果可能,应始终避免使用普通密码。但是,md5不能与db_user_namespace特性一起使用。如果连接受到SSL加密的保护,那么密码就可以安全地使用(虽然如果依赖于使用SSL,SSL证书身份验证可能是更好的选择)。

    pg_hba.conf的示例位置:
    /etc/postgresql/9.1/main/pg_hba.conf

     类似资料: