Sun Java System Directory Server Enterprise Edition 6.2 管理指南

配置與測試 JDBC 資料檢視

下列作業假設已安裝 mySQL 資料庫,此資料庫正在執行中並已填入資料,而且 mySQL 資料庫具有下列特性:

下表說明資料庫中的表格及其複合欄位。您需要此資訊才能設定 JDBC 資料檢視。

mySQL 表格 

欄位 

EMPLOYEE

IDSURNAMEPASSWORDTITLECOUNTRY_ID

COUNTRY

IDNAME

PHONE

USER_IDNUMBER

Procedure配置 JDBC 資料檢視

  1. 為 SQL 資料庫建立名為 mysql1 的 JDBC 資料來源。


    % dpconf create-jdbc-data-source -b sample_sql -B jdbc:mysql://host2.example.com:3306 \
     -J file:/net/host2.example/local/mysql/lib/jdbc.jar -S com.mysql.jdbc.Driver mysql1
  2. 指定 SQL 資料庫的使用者名稱與密碼檔案。


    % dpconf set-jdbc-data-source-prop mysql1 db-pwd-file:sqlpwd.txt db-user:root
  3. 重新啟動代理伺服器。


    % dpadm restart /local/dps
  4. 啟用資料來源,並允許該資料來源的寫入作業。


    % dpconf set-jdbc-data-source-prop mysql1 is-enabled:true is-read-only:false
  5. 建立名為 mysql1–pool 的 JDBC 資料來源池。


    % dpconf create-jdbc-data-source-pool mysql1-pool
  6. 將 JDBC 資料來源附加至資料來源池。


    % dpconf attach-jdbc-data-source mysql1-pool mysql1
  7. 為資料來源池建立名為 myjdbc1–view 且基底 DN 為 o=sql 的 JDBC 資料檢視。


    % dpconf create-jdbc-data-view mysql1-view mysql1-pool o=sql
  8. 為 MySQL 資料庫中的每個表格建立 JDBC 表格。


    % dpconf create-jdbc-table employee1 EMPLOYEE
    % dpconf create-jdbc-table country1 COUNTRY
    % dpconf create-jdbc-table phone1 PHONE

    SQL 資料庫中表格的名稱區分大小寫。請確保使用與 SQL 資料庫中相同的大小寫。

  9. 為各表格中的每一欄建立 JDBC 屬性。

    建立 JDBC 屬性會將 MySQL 欄對映至 LDAP 屬性。


    % dpconf add-jdbc-attr employee1 uid ID
    % dpconf add-jdbc-attr employee1 sn SURNAME
    % dpconf add-jdbc-attr employee1 userPassword PASSWORD
    % dpconf add-jdbc-attr employee1 room ROOM
    % dpconf add-jdbc-attr phone1 tel NUMBER
    % dpconf add-jdbc-attr country1 country NAME

    由於 phone1 user_idcountry1 id 欄僅在 MySQL 資料庫環境中使用,因此無須為這兩欄建立 JDBC 屬性。這兩欄不具有對應的 LDAP 屬性。

  10. 為 LDAP person 物件類別建立 JDBC 物件類別。

    在此步驟中,將 employee1 表格識別為主要表格,而將 country1phone1 表格識別為輔助表格。JDBC 物件類別的建立作業也需要 DN。在此範例中,DN 從資料檢視的 uid 屬性與基底 DN 中建構。


    % dpconf create-jdbc-object-class mysql1-view person employee1 country1 phone1 uid
  11. 定義主要表格與輔助表格之間的連結規則。

    連結規則定義於輔助表格上,並確定輔助表格的資料如何連結至主要表格的資料。


    % dpconf set-jdbc-table-prop country1 filter-join-rule:'ID=${EMPLOYEE.COUNTRY_ID}'
    % dpconf set-jdbc-table-prop phone1 filter-join-rule:'USER_ID=${EMPLOYEE.ID}'
  12. 指定 JDBC 物件類別的超級類別。

    超級類別表示 JDBC 物件類別從其繼承屬性的 LDAP 物件類別。


    % dpconf set-jdbc-object-class-prop mysql1-view person super-class:top

Procedure建立所需的 ACI

您必須透過配置 ACI 以啟用資料檢視的寫入存取,才能測試 JDBC 資料檢視。依預設拒絕對非 LDAP 資料檢視的寫入存取。就本例目的而言,增加一個允許使用者修改其密碼的全域 ACI 即已足夠。

  1. 以代理伺服器管理員的身份將 ACI 池增加至 JDBC 資料來源,並增加一個全域 ACI 以允許使用者修改其項目。


    % ldapmodify -p 1389 -D "cn=proxy manager" -w password
    dn: cn=mysql1,cn=virtual access controls
    changetype: add
    objectclass: acisource
    dpsaci: (targetattr="*") (target = "ldap:///o=sql") \
     (version 3.0; acl "enable all access for all users "; allow(all) \
    userdn="ldap:///uid=kvaughan,o=sql";)
    cn: mysql1
  2. 建立連線處理程式處理與 o=sql 網域的連線。


    % dpconf create-connection-handler mysql1-handler
  3. 啟用連線處理程式,並將其配置為處理來自 o=sql 網域中使用者的所有連結。


    % dpconf set-connection-handler-prop mysql1-handler is-enabled:true \
     bind-dn-filters:"uid=.*,o=sql"
  4. 將連線處理程式配置為使用先前增加的 ACI 池。


    % dpconf set-connection-handler-prop mysql1-handler aci-source:mysql1

Procedure測試 JDBC 資料檢視

  1. o=sql 下使用者的身份搜尋 JDBC 資料來源,來驗證是否可以讀取資料檢視。


    % ldapsearch -p 1389 -D "uid=kvaughan,o=sql" -w mypwd -b o=sql "objectclass=*"

    備註 –

    您必須使用 o=sql 下使用者的憑證或匿名連結。


  2. o=sql 下使用者的身份修改 userPassword 屬性,來驗證是否可以寫入資料檢視。


    % ldapmodify -p 1389 -D "uid=kvaughan,o=sql" -w mypwd
    dn: uid=kvaughan,o=sql
    changetype: modify
    replace: userPassword
    userPassword: myNewpwd