PostgreSQL 9.0.4 中文文档 | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 31. libpq-C库 | Fast Forward | Next |
如果libpq已经通过LDAP支持(configure的--with-ldap选项)进行的编译, 可以从一个中央服务器,通过LDAP检索连接选项,如host或dbname。 这样做的好处是,如果一个数据路连接参数发生了改变,在所有客户端的连接信息不必进行改变。
LDAP连接参数查找使用连接服务文件pg_service.conf(参阅Section 31.15)。 在pg_service.conf中的以ldap://开始的一行被看做是一个LDAP URL,并且会执行一个LDAP查询。 返回结果会是一个keyword = value,用于设置连接选项。URL必须符合RFC 1959,并且是如下形式:
ldap://[hostname[:port]]/search_base?attribute?search_scope?filter
这里localhost和port缺省的hostname缺省为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
might be queried with the following 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=*)