萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

以 MySQL 作為 OpenLDAP 後端資料庫的部署指南

架構優勢

OpenLDAP 原生支援多種後端(BDB、HDB、MDB),若選用 **MySQL(透過 ODBC)**,可享受:

  • 關聯式查詢與報表工具直接存取目錄資料
  • 成熟的備份/復制/高可用生態
  • 第三方應用(HR、CRM)易於整合同步

軟體棧(FreeBSD Ports 範例)

元件Port 路徑說明
MySQL Server/usr/ports/databases/mysql57-server建議 5.7+,支援 JSON、GIPK
MySQL Client/usr/ports/databases/mysql57-client
LibIODBC/usr/ports/databases/libiodbcODBC 驅動管理器
MyODBC/usr/ports/databases/mysql-connector-odbcMySQL 官方 ODBC 驅動
OpenLDAP/usr/ports/net/openldap24-server編譯選項 WITH_ODBC=YES

MySQL 端準備

mysqladmin -u root -p create ldap
mysql -u root -p -e "GRANT ALL ON ldap.* TO 'ldap'@'localhost' IDENTIFIED BY 'StrongPass';"

ODBC 配置(關鍵步驟)

/usr/local/etc/odbcinst.ini

[MySQL]
Description = ODBC for MySQL
Driver = /usr/local/lib/libmyodbc8w.so
FileUsage = 1

/usr/local/etc/odbc.ini

[ldap]
Driver = MySQL
Description = OpenLDAP Database
Server = localhost
Port = 3306
Database = ldap
User = ldap
Password = StrongPass
Socket = /tmp/mysql.sock
Option = 3
ReadOnly = No

驗證 ODBC 連線

iodbctest
# 輸入 DSN=ldap
SQL> SHOW TABLES;

若報 ODBCINI 環境變數缺失,執行:

export ODBCINI=/usr/local/etc/odbc.ini  # bash
setenv ODBCINI /usr/local/etc/odbc.ini  # csh/tcsh

OpenLDAP 設定

  1. 編譯安裝時啟用 WITH_ODBC=YES
  2. 複製範例配置:
    cp work/openldap-2.4.xx/servers/slapd/back-sql/rdbms_depend/mysql/slapd.conf /usr/local/etc/openldap/
  3. 匯入 Schema:
    mysql -u ldap -p ldap < backsql_create.sql
    mysql -u ldap -p ldap < testdb_create.sql
  4. 編輯 slapd.conf 關鍵段落:
database sql
suffix "dc=example,dc=com"
dbname "ldap"
subtree_cond "ldap_entries.dn LIKE CONCAT('%',?)"
# ... 其餘 ldap_attr_mappings、ldap_oc_mappings 等映射設定 ...

啟動與測試

/usr/local/etc/rc.d/slapd start
ldapsearch -x -b "dc=example,dc=com" -D "cn=admin,dc=example,dc=com" -W

常見坑點

  • MyODBC 驅動版本需與 MySQL Server 版本匹配(8.0 驅動對應 8.0 Server)
  • ODBC 連線池設定影響並發效能,建議 Option=3(啟用連線池)
  • OpenLDAP 2.5+ 已內建 back-mdb(LMDB),效能優於 SQL 後端,**除非有跨系統整合硬需求,優先考慮原生後端**

此架構適合「目錄資料需與關聯式業務系統深度整合」的場景,純認證授權用途建議用原生 MDB 後端。

copyright © 萬盛學電腦網 all rights reserved