用于Postgres身份验证的ident vs md5

时间:2015-01-16 02:44:15

标签: postgresql

我在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是本地IPv6IPv4连接的默认方法。

我将其从ident更改为md5

然后,通过Pgadmi3和psql的连接按预期工作

为什么ident会失败?

1 个答案:

答案 0 :(得分:6)

由于以下原因失败:

  

身份验证方法通过获取客户端来工作   来自身份服务器的操作系统用户名并将其用作   允许的数据库用户名(带有可选的用户名映射)。这个   仅在TCP / IP连接上受支持。

ident应该是 UNIX标识。要ident工作,您必须由psql用户运行PGAdminpostgres(CentOS上的默认Postgres进程所有者)。因此,请确保您制作了sudo su - postgressudo - postgres(并且它的效果与您所示的相同)。

md5实际上意味着 md5哈希密码识别。对我个人而言,最简单的方法。

我确信在你的例子中一切正常: - )