ident vs md5用于Postgres身份验证

lma*_*999 5 postgresql

我在CentOS上设置了Postgres数据库服务器,并创建了一个数据库mydb

psql以系统用户身份访问postgres并检查它是否存在:

$ sudo -u postgres -i
$ psql
postgres=# \l

 Name | Owner | ...    
--------------------
 mydb | postgres | ... 
Run Code Online (Sandbox Code Playgroud)

然后配置它:

(1)listen_addresses = 'localhost'在中未注释postgresql.conf

(2)设置用户密码postgres

sudo -u postgres psql template1
ALTER USER postgres with encrypted password 'my_password';
Run Code Online (Sandbox Code Playgroud)

但是,通过psql -U postgres -h localhost和Pgadm3的连接失败,并显示以下错误:

Ident autentication failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)

我查了一下/var/lib/pgsql/9.4/data/pg_hba.conf

ident是本地IPv6IPv4连接的默认方法。

我将其从更改identmd5

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

为什么ident失败?

sas*_*rov 7

由于以下原因而失败:

身份认证方法的工作方式是从ident服务器获取客户端的 操作系统用户名,并将其用作允许的数据库用户名(具有可选的用户名映射)。仅在TCP / IP连接上支持此功能。

ident应该意味着UNIX标识。为了正常ident工作,您必须运行psqlPGAdminpostgres用户运行(CentOS上的默认Postgres进程所有者)。因此,请确保您制作了sudo su - postgressudo - postgres(并且效果如上所示)。

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

我敢肯定,在您的示例中,一切正常:-)