Dan*_*iel 15 postgresql authentication postgresql-9.4 pg-hba.conf
我刚刚在 Ubuntu 15.10 上安装了 PostgreSQL 9.4。
createuser -P myuser
createdb -O myuser mydatabase
pg_hba.conf
并添加local mydatabase myuser md5
sudo service postgresql restart
用户myuser只是一个 PostgresSQL 用户,在 Ubuntu 上没有用户帐户。
当我尝试使用psql -W mydatabase myuser
它连接到数据库时失败并显示psql: FATAL: Peer authentication failed for user "myuser"
.
PostgreSQL 正在运行……
? postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
Active: active (exited) since Thu 2016-03-03 09:53:00 CET; 9min ago
Process: 22219 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 22219 (code=exited, status=0/SUCCESS)
Mar 03 09:53:00 SERVER01 systemd[1]: Starting PostgreSQL RDBMS...
Mar 03 09:53:00 SERVER01 systemd[1]: Started PostgreSQL RDBMS.
Run Code Online (Sandbox Code Playgroud)
...和倾听。
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:postgresql *:* LISTEN
tcp6 0 0 localhost:postgresql [::]:* LISTEN
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 151534 /var/run/postgresql/.s.PGSQL.5432
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能将用户myuser连接到数据库mydatabase?
dez*_*zso 17
在几天前的全新安装中,我的第二行pg_hba.conf
是
local all all peer
Run Code Online (Sandbox Code Playgroud)
我相信这是使您的连接尝试失败的原因。
规则的顺序在这里很重要:将考虑与访问方法、用户名、数据库名称和源 IP 范围匹配的第一个规则。如果失败,则没有第二次尝试,因此连接尝试可能会失败。或者,正如文档所述:
没有“失败”或“备份”:如果选择了一条记录并且身份验证失败,则不考虑后续记录。如果没有记录匹配,则拒绝访问。
解决方案很简单:如果您不打算使用peer
身份验证,请删除上面的行,或者将您的特定规则移到这一行之上。