连接参数的 LDAP 查找
连接参数的 LDAP 查找¶
如果libpq已经在编译时打开了 LDAP支持(configure
的选项--with-ldap
),就可以通过 LDAP从一个中央服务检索host
或dbname
之类的连接参数。这样做的好处是如果一个数据库的连接参数改变,不需要在所有的客户端机器上更新连接信息。
LDAP连接参数查找使用连接服务文件sd_service.conf
(见连接服务文件)。sd_service.conf
中一个以ldap://
开始的行将被识别为一个LDAP URL 并且将执行一个 LDAP 查询。结果必须是一个keyword = value
对列表,它将被用来设置连接选项。URL必须遵循 RFC 1959 并且是形式
ldap://[hostname[:port]]/search_base?attribute?search_scope?filter
其中 hostname
默认为localhost
并且 port
默认为 389。
一次成功的 LDAP 查找后,sd_service.conf
的处理被终止。但是如果联系不上 LDAP则会继续处理sd_service.conf
。这就提供了后手,可以加入更多指向不同 LDAP 服务的 LDAPURL 行、经典的keyword = value
对或者默认连选项。如果你宁愿在这种情况下得到一个错误消息,在该 LDAP URL之后增加一个语法错误的行。
一个和 LDIF 文件一起创建的 LDAP 条目实例
version:1
dn:cn=mydatabase,dc=mycompany,dc=com
changetype:add
objectclass:top
objectclass:groupOfUniqueNames
cn:mydatabase
uniqueMember:host=dbserver.mycompany.com
uniqueMember:port=5439
uniqueMember:dbname=mydb
uniqueMember:user=mydb_user
uniqueMember:sslmode=require
可以用下面的 LDAP URL 查询:
ldap://ldap.mycompany.com/dc=mycompany,dc=com?uniqueMember?one?(cn=mydatabase)
你也可以将常规的服务文件条目和 LDAP 查找混合。sd_service.conf
中一节的完整例子:
version:1
dn:cn=mydatabase,dc=mycompany,dc=com
changetype:add
objectclass:top
objectclass:device
cn:mydatabase
description:host=dbserver.mycompany.com
description:port=5439
description:dbname=mydb
description:user=mydb_user
description:sslmode=require
可以用下面的 LDAP URL 查询到:
ldap://ldap.mycompany.com/dc=mycompany,dc=com?description?one?(cn=mydatabase)