OpenLDAP 原生支援多種後端(BDB、HDB、MDB),若選用 **MySQL(透過 ODBC)**,可享受:
| 元件 | Port 路徑 | 說明 |
|---|---|---|
| MySQL Server | /usr/ports/databases/mysql57-server | 建議 5.7+,支援 JSON、GIPK |
| MySQL Client | /usr/ports/databases/mysql57-client | |
| LibIODBC | /usr/ports/databases/libiodbc | ODBC 驅動管理器 |
| MyODBC | /usr/ports/databases/mysql-connector-odbc | MySQL 官方 ODBC 驅動 |
| OpenLDAP | /usr/ports/net/openldap24-server | 編譯選項 WITH_ODBC=YES |
mysqladmin -u root -p create ldap
mysql -u root -p -e "GRANT ALL ON ldap.* TO 'ldap'@'localhost' IDENTIFIED BY 'StrongPass';"
/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
iodbctest
# 輸入 DSN=ldap
SQL> SHOW TABLES;
若報 ODBCINI 環境變數缺失,執行:
export ODBCINI=/usr/local/etc/odbc.ini # bash
setenv ODBCINI /usr/local/etc/odbc.ini # csh/tcsh
WITH_ODBC=YEScp work/openldap-2.4.xx/servers/slapd/back-sql/rdbms_depend/mysql/slapd.conf /usr/local/etc/openldap/mysql -u ldap -p ldap < backsql_create.sqlmysql -u ldap -p ldap < testdb_create.sqlslapd.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
Option=3(啟用連線池)back-mdb(LMDB),效能優於 SQL 後端,**除非有跨系統整合硬需求,優先考慮原生後端**此架構適合「目錄資料需與關聯式業務系統深度整合」的場景,純認證授權用途建議用原生 MDB 後端。