我在CentOS上设置了一个Postgres数据库服务器并创建了一个数据库mydb
。
我以系统用户psql
的身份访问postgres
并检查其是否存在:
$ sudo -u postgres -i
$ psql
postgres=# \l
Name | Owner | ...
--------------------
mydb | postgres | ...
然后我配置它:
(1)listen_addresses = 'localhost'
中postgresql.conf
取消注释。
(2)我为用户postgres
设置了密码。
sudo -u postgres psql template1
ALTER USER postgres with encrypted password 'my_password';
但是,通过psql -U postgres -h localhost
和Pgadm3的连接失败并出现此错误:
Ident autentication failed for user "postgres"
我查了/var/lib/pgsql/9.4/data/pg_hba.conf
。
ident
是本地IPv6
和IPv4
连接的默认方法。
我将其从ident
更改为md5
。
然后,通过Pgadmi3和psql
的连接按预期工作
为什么ident
会失败?
答案 0 :(得分:6)
由于以下原因失败:
身份验证方法通过获取客户端来工作 来自身份服务器的操作系统用户名并将其用作 允许的数据库用户名(带有可选的用户名映射)。这个 仅在TCP / IP连接上受支持。
ident
应该是 UNIX标识。要ident
工作,您必须由psql
用户运行PGAdmin
或postgres
(CentOS上的默认Postgres进程所有者)。因此,请确保您制作了sudo su - postgres
或sudo - postgres
(并且它的效果与您所示的相同)。
md5
实际上意味着 md5哈希密码识别。对我个人而言,最简单的方法。
我确信在你的例子中一切正常: - )