我在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是本地IPv6和IPv4连接的默认方法。
我将其从更改ident为md5。
然后,通过Pgadmi3连接并按psql预期工作
为什么ident失败?
由于以下原因而失败:
身份认证方法的工作方式是从ident服务器获取客户端的 操作系统用户名,并将其用作允许的数据库用户名(具有可选的用户名映射)。仅在TCP / IP连接上支持此功能。
本ident应该意味着UNIX标识。为了正常ident工作,您必须运行psql或PGAdmin按postgres用户运行(CentOS上的默认Postgres进程所有者)。因此,请确保您制作了sudo su - postgres或sudo - postgres(并且效果如上所示)。
在md5实际上意味着MD5哈希密码识别。对我个人而言,这是最简单的方法。
我敢肯定,在您的示例中,一切正常:-)
| 归档时间: |
|
| 查看次数: |
4112 次 |
| 最近记录: |