gpt4 book ai didi

postgresql - 本地用户MD5认证

转载 作者:行者123 更新时间:2023-12-04 02:01:47 25 4
gpt4 key购买 nike

PostgreSQL 10.0,Ubuntu 16.04

我希望本地主机的用户使用密码登录。
为此,我将带有 md5 的规则移至顶部。

显示 hba_file;

postgres=# # TYPE  DATABASE        USER            ADDRESS                 METHOD
postgres-#
postgres-# # IPv4 local connections:
postgres-# host all all 127.0.0.1/32 md5
postgres-# # "local" is for Unix domain socket connections only
postgres-# local all all peer
postgres-# # IPv6 local connections:
postgres-# host all all ::1/128 md5
postgres-# # Allow replication connections from localhost, by a user with the
postgres-# # replication privilege.
postgres-# local replication all peer
postgres-# host replication all 127.0.0.1/32 md5
postgres-# host replication all ::1/128 md5

然后重启服务:
sudo service postgresql restart

问题:
michael@michael-HP:~$ psql -U admin -W
Password for user admin:
psql: FATAL: Peer authentication failed for user "admin"

你能帮我理解为什么我的 md5 设置不起作用吗?

最佳答案

manual page for psql 状态:

If you omit the host name, psql will connect via a Unix-domain socket to a server on the local host, or via TCP/IP to localhost on machines that don't have Unix-domain sockets.



因此,如果您的服务器正在监听域套接字以及 TCP/IP,则您建立的连接将是 local 类型。如 the pg_hba.conf manual page 所述.

因此,它将匹配这一行:
local   all             all                                     peer

这将尝试使用 "peer authentication", as described here .

你应该:
  • 将该行更改为 require md5本地(域套接字)连接的身份验证。
  • 在您的 psql 中指定主机名命令与 -h 127.0.0.1/--host 127.0.0.1强制使用 TCP/IP。
  • 通过设置 unix_socket_directories 完全禁用 Unix 域套接字到一个空字符串为 described in the configuration section of the manual .
  • 关于postgresql - 本地用户MD5认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46713369/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com