[一]、概述
现有的关系型数据库存在的问题是,在操作数据过程中,需要频繁的进行数据类型的验证和事务的完整性的确认
,导致系统整体的性能降低。
目录服务的推出主要是解决上述数据库中存在的问题。目录的数据类型主要是字符型,而不是关系数据库提供的整数、浮点数、日期、货币等类型,它主要面向数据的查询服务(查询和修改操作比一般是大于10:1),一般不支持通用数据库中针对大量更新操作需要的事务回滚(rollback)机制,它的数据修改使用简单的锁定机制实现All-or-Nothing,它的目标是快速响应和大容量查询并且提供多目录服务器的信息复制功能。
[二]、和关系型数据库对比
LDAP目录中的信息是是按照树型结构组织,具体信息存储在条目(entry)的数据结构中。条目相当于关系数据库中表
的记录;条目是具有区别名DN(Distinguished Name)的属性(Attribute),DN是用来引用条目的,DN相当于关系
数据库表中的关键字(PrimaryKey)。属性由类型(Type)和一个或多个值(Values)组成,相当于关系数据库中的
字段(Field)由字段名和数据类型组成,只是为了方便检索的需要,LDAP中的Type可以有多个Value,而不是关系数
据库中为降低数据的冗余性要求实现的各个域必须是不相关的。LDAP中条目的组织一般按照地理位置和组织关系进
行组织,非常的直观。LDAP把数据存放在文件中,为提高效率可以使用基于索引的文件数据库,而不是关系数据
库。
[三]、安装过程
openLDAP 下载地址(http://www.userbooster.de/download/openldap-for-windows.aspx )
按照提示 一直 next ,直到安装完成。
安装完成后,在系统服务中,找到 OpenLDAPService,先停止服务,再把启动类型修改成手动,便于自己的测试。
[四]、配置启动
安装目录:D:\Program Files (x86)\OpenLDAP
编辑文件:D:\ProgramFiles (x86)\OpenLDAP\slapd.conf 找到如下内容:
suffix "dc=maxcrc,dc=com"
rootdn "cn=Manager,dc=maxcrc,dc=com"
修改成:
suffix "dc=micmiu,dc=com"
rootdn "cn=Manager,dc=micmiu,dc=com"
打开控制台,切换到openLDAP安装目录下,启动openLDAP
新建一个文件:D:\Program Files (x86)\OpenLDAP\mydemo.ldif ,内容如下:
dn:dc=micmiu,dc=com
objectclass: domain
objectclass: top
o: Michael Blog
dc: micmiu
dn:ou=Developer,dc=micmiu,dc=com
objectclass: organizationalUnit
ou: Developer
description: Container for developer entries
dn:ou=Tester,dc=micmiu,dc=com
objectclass: organizationalUnit
ou: Tester
description: Container for test entries
dn:uid=Michael,ou=Developer,dc=micmiu,dc=com
uid: Michael
objectClass: inetOrgPerson
mail: sjsky_007@gmail.com
userPassword: 111111
labeledURI: http://www.micmiu.com
sn: Sun
cn: Michael Sun
dn:uid=Miumiu,ou=Tester,dc=micmiu,dc=com
uid: Miumiu
objectClass: inetOrgPerson
userPassword: 111111
labeledURI: http://www.micmiu.com
sn: Wu
cn: Miumiu Wu
tips:格式要严格,每行的开头和末尾不能有空格
然后在控制台中切换到openLDAP安装目录下执行ldapadd命令:
ldapadd -x -D "cn=Manager,dc=micmiu,dc=com" -w secret -f ./mydemo.ldif
参数说明:
- -x 使用简单验证方式
- -D 指定管理员DN(与slapd.conf中配置的一致)
- -W 大写W表示回车后根据提示输入密码,可以使用小写的-w password 直接输入密码
- -f 需要导入数据LDIF的文件名
- -h 目录服务器的IP地址
因为本机安装过oracle,而Oracle自带安装了LDAPclient的一些常用命令,其中就包括ldapadd 。如果没有”ldapadd“这个命令,还可以用它自带的命令“slapadd”代替导入数据文件。不过要注意的是:和ldapadd命令不同的是:执行slapadd命令前需要先停止之前启动的 slapd 服务(打开服务确定停止了该服务),然后在控制台中切换到openLDAP安装目录下执行命令:
slapadd -v -l ./mydemo.ldif
ldapadd 和slapadd 的差异:
- ldapadd 对本地和远程服务都可以操作,操作时LDAP服务是不能停止
- slapadd 只能对本地的LDAP服务进行操作,操作时本地LDAP服务必须先停止
[五]、客户端介绍
网上搜索到一个客户端:LdapBrowser282 附件提供相关下载:LdapBrowser282.zip
下载解压后直接双击:lbe.bat 文件即可运行。
上面的输入的密码就是之前安装过程中的那个密码(如果自己没有修改过)
建立好connect后,可以正确查询到之前添加的相关信息。
[六]、多级DC的ldif文件的配置
在实际应用中我们经常会碰到二级域名,类似:app1.micmiu.com、app2.micmiu.com,那么对应到LDAP中的DC就是多级,这时我们ldif文件又是如何配置呢?下面将给出个示例演示,新建一个文件:D:\ProgramFiles (x86)\OpenLDAP\myappuser.ldif ,内容如下:
dn:dc=app1,dc=micmiu,dc=com
objectclass: domain
o: Michael Demo
dc: app1
dn:dc=app2,dc=micmiu,dc=com
objectclass: domain
o: Michael Demo
dc: app2
dn:ou=Demo,dc=app1,dc=micmiu,dc=com
objectclass: organizationalUnit
ou: Developer
description: Container for Demo entries
dn:ou=Demo,dc=app2,dc=micmiu,dc=com
objectclass: organizationalUnit
ou: Developer
description: Container for Demo entries
dn:uid=michael,ou=Demo,dc=app1,dc=micmiu,dc=com
uid: admin
objectClass: inetOrgPerson
mail: sjsky_007@gmail.com
userPassword: 111111
labeledURI: http://www.micmiu.com
sn: Sun
cn: Michael Sun
dn:uid=hazel,ou=Demo,dc=app1,dc=micmiu,dc=com
uid: user
objectClass: inetOrgPerson
userPassword: 111111
labeledURI: http://www.micmiu.com
sn: Wu
cn: Hazel Wu
dn:uid=michael,ou=Demo,dc=app2,dc=micmiu,dc=com
uid: admin
objectClass: inetOrgPerson
mail: sjsky_007@gmail.com
userPassword: 111111
labeledURI: http://www.micmiu.com
sn: Sun
cn: Michael Sun
dn:uid=hazel,ou=Demo,dc=app2,dc=micmiu,dc=com
uid: user
objectClass: inetOrgPerson
userPassword: 111111
labeledURI: http://www.micmiu.com
sn: Wu
cn: Hazel Wu
tips:注意dc的对应关系,如下图:
然后在控制台窗口中执行ldapadd命令:
ldapadd-x -D "cn=Manager,dc=micmiu,dc=com" -w secret -f ./myappuser.ldif
客户端工具中可以查询到相关信息: