Windows+OpenLDAP+MySQL配置及使用详解(二)——数据库初始化

来源:互联网 发布:淘宝能卖保健品吗 编辑:程序博客网 时间:2024/06/05 13:23

现在我们了解一下数据库端的原理。

如果已经按照上一篇文章:“Windows+OpenLDAP+MySQL配置及使用详解(一)——基础配置”配置成功,在了解本篇文章内容之前,我们先将数据库中的测试数据清除掉:

1、删除原数据库中所有表格;

2、在下载的源码包中找到servers/slapd/back-sql/rdbms_depend/mysql目录,执行脚本backsql_create.sql 。

本文将通过一个例子讲解数据库结构。假设我们的LDAP服务端目录结构如下:

image

图一

首先给大家看一下,相应数据库结构:

image

图二

由图二看出,数据库中包括系统表格和自定义表格。系统表格是必须建立的表格,即backsql_create.sql脚本里的内容;自定义表格是根据实际的LDAP entry目录结构建立的相应的对象(Object)表,表格字段对应该对象的属性(Attribute)。

下面开始讲解怎样初始化数据库数据,使其能存储图一中的目录结构。

注:如果更改了系统表格中的数据,需要重启ldap服务才能生效。

1. 新增自定义表格:

自定义表格主要目的是为了存储同一类别的对象(object)数据,表格各个字段定义了对象类(objectClass)的属性。objectClass、object、attribute的概念都来自LDAP,下面都直接用英文表示,大家会比较清晰一些。

本例中,有如下objectClass:

DN

objectClass

dc=wfi,dc=wfiqa,dc=com

organization(组织)

ou=users

organizationalUnit(组织内单元,本例中只有users这一个单元)

uid=admin

uid=user1

inetOrgPerson(组织用户)

一般情况下,每一个objectClass,我们为其创建一个自定义表格,每个字段对应该对象类的一个属性。根据上表,我们新建了organization,org_unit,users三个表,具体表结构参见图一。

2 在系统表ldap_oc_mappings中加入objectClass信息:

此表格中主要存储objectClass和对应的自定义表格的对应关系。

以下是表格各字段的详细介绍:

Column

Desc.

id

objectClass的唯一标识

name

objectClass的名称

keytbl

对应的自定义表格名称

keycol

对应的自定义表格中关键字字段名称

create_proc

新增一个object时使用的SQL语句

delete_proc

删除一个object时使用的SQL语句

expect_return

执行新增或删除object的SQL语句,代表操作成果的SQL CODE值,通常是0。

下面是本例中,往本表添加的数据:

Column

Row1

Row2

Row3

id

1

2

3

Name

organization

organizationalUnit

inetOrgPerson

Keytbl

organization

org_unit

users

Keycol

id

id

id

create_proc

(稍后再讲)

  

delete_proc

(稍后再讲)

  

expect_return

0

0

0

3 在系统表ldap_attr_mappings中加入attribute信息:

此表格实际上就是建立LDAP中各attribute和数据库中objectClass的各个属性的关系。

此表格中sel_expr,from_tbls,join_where三个字段主要存储attribute如何通过SQL语句获取。

例如:获得某个attribute的SQL语句为:

SELECT CONCAT(a.column2,b.column2)

FROM a,b

WHERE a.column3=b.column1)

分别将SELECT,FROM,WHERE后面的语句存储到这三个字段里。

另外,param_order字段的含义目前还没搞清楚,官网给出的例子里,这个字段的值都是3,所以这里也都填3.

以下是表格各个字段的详细介绍:

Column

Desc.

id

attribute唯一标识

oc_map_id

所属objectClass的唯一标识

name

Attribute名称

sel_expr

SELECT后面的SQL语句

sel_expr_u

不清楚用途,本例中没有使用

from_tbls

FROM后面的SQL语句

join_where

WHERE后面的SQL语句

add_proc

修改一个attribute值时使用的SQL语句

delete_proc

删除一个attribute值时使用的SQL语句

param_order

不清楚含义,但官网给出的例子中,这个字段的值全是3,所以本例中也将值设为3。

expect_return

执行修改或删除attribute值的SQL语句,代表操作成果的SQL CODE值,通常是0。

以下是本例中,往本表添加的数据:

Column

Row1

Row2

Row3

Row4

Row5

Row6

Row7

id

1

2

3

4

5

6

7

oc_map_id

1

2

3

3

3

3

3

name

dc

ou

uid

sn

cn

userPassword

mail

sel_expr

name

name

code

name_en

name_cn

password

email

sel_expr_u

       

from_tbls

organization

org_unit

users

users

users

users

users

join_where

       

add_proc

(稍后再讲)

      

delete_proc

(稍后再讲)

      

param_order

3

3

3

3

3

3

3

expect_return

0

0

0

0

0

0

0

完成上面的操作后,目录结构的初始化工作完成。

下一篇:Windows+OpenLDAP+MySQL配置及使用详解(三)——LDAP数据的维护,将介绍怎样维护LDAP数据。