🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 31.17\. LDAP查找连接参数 如果libpq已经通过LDAP支持(`configure` 的`--with-ldap`)进行了编译,可以从一个中央服务器, 通过LDAP检索连接选项,如`host`或`dbname`。 这样做的好处是,如果一个数据库连接参数发生了改变,在所有客户端的连接信息不必进行改变。 LDAP连接参数查找使用连接服务文件`pg_service.conf`(参阅 [Section 31.16](#calibre_link-506))。在`pg_service.conf` 中的以`ldap://`开始的一行被看做是一个LDAP URL, 并且会执行一个LDAP查询。返回结果会是一个`keyword = value`的列表, 用于设置连接选项。URL必须符合RFC 1959,并且是如下形式: ``` ldap://[_hostname_[:_port_]]/_search_base_?_attribute_?_search_scope_?_filter_ ``` 这里`_hostname_`缺省为`localhost` 和`_port_`缺省为389。 `pg_service.conf`的处理在LDAP成功查找之后就会被终止, 但如果不能成功连接LDAP服务,那么会继续。 这是为了进一步指向不同的LDAP服务器的LDAP URL线而提供的一个回滚, 标准的`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查找来混合日常服务文件。一个`pg_service.conf` 中完整的一节的例子如下: ``` # only host and port are stored in LDAP, specify dbname and user explicitly [customerdb] dbname=customer user=appuser ldap://ldap.acme.com/cn=dbserver,cn=hosts?pgconnectinfo?base?(objectclass=*) ```