Windows+OpenLDAP+MySQL配置及使用詳解(二)——數據庫初始化

如今咱們瞭解一下數據庫端的原理。mysql

若是已經按照上一篇文章:「Windows+OpenLDAP+MySQL配置及使用詳解(一)——基礎配置」配置成功,在瞭解本篇文章內容以前,咱們先將數據庫中的測試數據清除掉:sql

一、刪除原數據庫中全部表格;數據庫

二、在下載的源碼包中找到servers/slapd/back-sql/rdbms_depend/mysql目錄,執行腳本backsql_create.sql 。app

本文將經過一個例子講解數據庫結構。假設咱們的LDAP服務端目錄結構以下:測試

image

圖一ui

首先給你們看一下,相應數據庫結構:spa

image

圖二.net

由圖二看出,數據庫中包括系統表格和自定義表格。系統表格是必須創建的表格,即backsql_create.sql腳本里的內容;自定義表格是根據實際的LDAP entry目錄結構創建的相應的對象(Object)表,表格字段對應該對象的屬性(Attribute)。code

下面開始講解怎樣初始化數據庫數據,使其能存儲圖一中的目錄結構。server

注:若是更改了系統表格中的數據,須要重啓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

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

完成上面的操做後,目錄結構的初始化工做完成。

相關文章
相關標籤/搜索