MIRACLE
メールサービス申込 ユーザー登録 パートナー情報
お問い合わせ FAQ サイトマップ
MIRACLE LINUXの特長 製品紹介 サービス案内 購入 サポート 技術フォーラム

プロフィール

日本発のリナックス企業、ミラクル・リナックスで奮闘する社員のブログです。

ミラクル関連リンク

採用情報

サイト検索

最近のトラックバック

2008年8月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

« Asianux Server 3 打ち上げ | メイン | ディナーパーティ(韓国にて) »

OpenLDAPのバックエンドにMySQLを使う (未完)

現在、とある理由でOpenLDAPの設計を行っており、その過程でOpenLDAPのバックエンドにMySQLが使えそうかどうかを試してみました。その設定と所感をメモとして残しておきます。

利用したOSはMIRACLE LINUX 4.0です。OpenLDAPのバージョンは2.2.13、MySQLのバージョンは4.1.20で、ともにMIRACLE LINUX 4.0のパッケージを使用し、執筆時点で最新版のものを使用しています。

関連パッケージをインストール

最低限必要なパッケージは以下のものです。

  • openldap-servers
  • openldap-servers-sql
  • mysql-server
  • unixODBC
  • MyODBC

MySQLサーバの起動とテスト用データベースのインポート

MySQLはデフォルトの設定で起動させてOpenLDAP用のテストデータベースを作成します。

# service mysqld start
mysqladmin -uroot create ldaptest

続いてopenldap-servers-sqlパッケージに付属しているテスト用スキーマをインストールします。

$ mysql -uroot ldaptest < /usr/share/doc/openldap-servers-sql-2.2.13/rdbms_depend/mysql/backsql_create.sql
$ mysql -uroot ldaptest < /usr/share/doc/openldap-servers-sql-2.2.13/rdbms_depend/mysql/testdb_create.sql
$ mysql -uroot ldaptest < /usr/share/doc/openldap-servers-sql-2.2.13/rdbms_depend/mysql/testdb_data.sql
$ mysql -uroot ldaptest < /usr/share/doc/openldap-servers-sql-2.2.13/rdbms_depend/mysql/ testdb_metadata.sql

ODBCの設定と接続テスト

/etc/odbcinst.iniの以下の5行のコメントアウトを外します。

[MySQL]
Description     = ODBC for MySQL
Driver          = /usr/lib/libmyodbc.so
Setup           = /usr/lib/libodbcmyS.so
FileUsage       = 1

/etc/odbc.iniに以下の設定を行います。

[ldaptest]
Description = ldaptest
Driver = MySQL
Server = localhost
Port =
User = root
Password =
Database = ldaptest

ODBC経由でMySQLに接続できることを確認します。

$ isql ldaptest

以下のような表示が出れば成功です

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

OpenLDAPサーバの設定

/etc/openldap/slapd.confを以下のように編集します。

# Load dynamic backend modules:
modulepath      /usr/sbin/openldap          ← コメントを外す
# moduleload    back_bdb.la
# moduleload    back_ldap.la
# moduleload    back_ldbm.la
# moduleload    back_passwd.la
# moduleload    back_shell.la
moduleload      back_sql.la          ← コメントを外す

~~以降の行を最後に追加~~

#######################################################################
# sql database definitions
#######################################################################

database        sql
suffix          "dc=ldaptest,dc=com"
rootdn          "cn=root,dc=ldaptest,dc=com"
rootpw          secret
dbname          ldaptest
dbuser          root
dbpasswd        ""
subtree_cond    "ldap_entries.dn LIKE CONCAT('%',?)"
insentry_query  "INSERT INTO ldap_entries (dn,oc_map_id,parent,keyval) VALUES (?,?,?,?)"
has_ldapinfo_dn_ru      no

OpenLDAPサーバの起動

OpenLDAPサーバをテストモードで起動します。

# slapd -d5

すると、以下のようなエラーが出て起動が成功しませんでした...

Return code: -1
   Native error code: 1054
   SQL engine state:  S0022
   Message:           [unixODBC][TCX][MyODBC]Unknown column 'sel_expr_u' in 'field list'
==>backsql_free_db_conn()

どうもテスト用データベースが不完全で接続ができないようです。手動でsel_expr_uカラムを追加してみたのですが、それでも動作しませんでした。

と、ここまで実施してデータベースの構造まで確認する時間がないため作業を中断してしまいました。所感としては、

  • データをRDBMSに保存できるので、データにアクセスするインターフェースを作成しやすい。
  • すでにデータベースに保存されている情報をLDAPのインターフェースから利用できる。

という利点を狙っていたのですが、

  • MySQLデータベース内に、LDAPのスキーマとMySQLのデータベース間の変換の定義を作成する必要があり、設定が煩雑。
  • LDAPとMySQLの冗長化が難しく、システム自体が複雑になる。

というデメリットの方が大きいように感じたので、この組み合わせはリスキーかな...という印象です。

とはいえ途中まで設定しておいて動かないのは気持ち悪いので、いつかは動作させたいところです。

トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/4447/10300905

このページへのトラックバック一覧 OpenLDAPのバックエンドにMySQLを使う (未完):

コメント

RDBMSとディレクトリツリーではデータ構造が全然違うため、なかなかスマートには動かせないみたいですね。

http://www.openldap.org/faq/data/cache/378.html

OpenLDAP 2.2.13では古すぎて使えないと思いますよ。

shiro3>

スキーマの変換の定義を行なう必要があるとどうしても面倒ですね。(MySQLを使わない)通常のLDAPのスキーマでもそれほど単純ではないように感じているぐらいですので...

無名さん>

今ならばやはりopenldap-2.3系なのでしょうね。次に試すときは2.3系で試してみようと思います。

コメントを投稿

会社情報 採用情報 個人情報保護方針 商標等取り扱い事項 English
Copyright(c)2000-2006 MIRACLE LINUX CORPORATION. All Rights Reserved.