use*_*919 3 authentication postgresql
我试图通过结构脚本运行一些postgresql命令.当我执行脚本时,我得到:
out: psql: FATAL: Peer authentication failed for user "sparc2"
Run Code Online (Sandbox Code Playgroud)
这就是我的pg_hba.conf文件的样子:
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 md5
#host replication postgres ::1/128 md5
# added
local sparc2 sparc2 md5
host sparc2 sparc2 127.0.0.1/32 md5
host sparc2 sparc2 10.0.2.2/32 md5
host all all all password
Run Code Online (Sandbox Code Playgroud)
我还修改了postgresql.conf文件并添加了这一行:
listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)
应用更改后,我重新启动了postgresql.但错误仍然是一样的.
PostgreSQL有2个连接入口点:
host在pg_hba.conf中)local在pg_hba.conf中)您的服务器配置为使用peer仅适用于Unix套接字的auth,并且意味着 - 询问内核OS用户名是否与DB用户名匹配.
您有以下选择:
pg_hba.conf为使用md5auth进行local套接字连接,或PGHOST变量就足够了],或者sparc2,而不是postgres.风险/弊端
通常,"peer"auth是可以的.基于内核的本地身份验证的易用性和安全性是许多发行版为本地管理连接选择它的原因.它尤其适用于多用户shell服务器.您只能为选定的帐户停用它:
#CHANNEL DB USER METHOD
local all sparc2 md5
local all all peer
Run Code Online (Sandbox Code Playgroud)