我有一个本地 psql 服务器,配置为对除postgres
帐户之外的所有服务器使用 ldap。但是 ldap 未在local
psql 对该角色没有问题的地方使用,并且在使用host
ldap 的地方无法找到该角色。
找不到角色是因为 pg_hba.conf 问题还是授予额外权限的问题?还是其他原因?
插座
psql lncddb useraccnt
# psql (11.2 (Debian 11.2-2), server 10.4 (Debian 10.4-2))
# login without password prompt, 'useraccnt' is also system account (in /etc/passwd)
当地的
psql -h localhost lncddb useraccnt
# Password for user useraccnt: fake
偏僻的
psql -h 10.145.64.121 lncddb useraccnt -p 5433
# Password for user useraccnt: ldappass
psql:严重:角色“useraccnt”不存在
或者输入了错误的密码
psql:严重:用户“useraccnt”的 LDAP 身份验证失败
严重错误:用户“useraccnt”的 LDAP 身份验证失败
pg_hba
# postgres is special
local all postgres peer
host all postgres 0.0.0.0/0 md5
# everyone else should go through ldap
local all all ldap ldapserver=a.b.net ldapsuffix="@place.edu" ldapport=389
host all all 0.0.0.0/0 ldap ldapserver=a.b.net ldapsuffix="@place.edu" ldapport=389
host all all ::1/128 ldap ldapserver=a.b.net ldapsuffix="@place.edu" ldapport=389
foranw 创建了类似
create role useraccnt with LOGIN REPLICATION password 'fake';
GRANT ALL PRIVILEGES ON DATABASE lncddb TO useraccnt;
的角色lncddb
是
psql lncddb postgres -c '\l lncddb'
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
--------+----------+----------+-------------+-------------+-----------------------
lncddb | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | useraccnt=CTc/postgres
(1 row)
答案1
指定端口,psql 标头 ( psql (11.2 (Debian 11.2-2), server 10.4 (Debian 10.4-2))
) 应该会提示我。我配置了错误的服务器。
systemctl |grep postgres
postgresql.service loaded active exited PostgreSQL RDBMS
[email protected] loaded active running PostgreSQL Cluster 10-main
[email protected] loaded active running PostgreSQL Cluster 11-main
system-postgresql.slice loaded active active system-postgresql.slice