准备资源
系统版本: ubuntu 22.04
mysql 版本: 8.0.35
IP: 192.168.0.100
下载编译openldap
本文将跳过mysql安装部分,请另寻安装方式。
apt-get install gcc make libssl-dev libdb-dev unixodbc-dev time
wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.6.6.tgz
tar xvfz openldap-*.tgz
cd openldap-*
./configure --enable-sql
make depend
make
make install
创建数据库
CREATE USER 'openldap'@'%' IDENTIFIED BY 'dbpassword';
CREATE DATABASE IF NOT EXISTS openldap;
GRANT ALL PRIVILEGES ON openldap.* TO 'openldap'@'%';
FLUSH PRIVILEGES;
配置文件
/etc/odbc.ini
[openldap]
Description = Example for OpenLDAP's back-sql
Driver = MySQL
Trace = No
Database = openldap
Servername = 192.168.0.100 #mysql host
UserName = openldap
Password = dbpassword
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings =
/etc/odbcinst.ini
下载odbc文件:cdn.mysql.com//Downloads/…
解压至:/usr/lib/x86_64-linux-gnu/odbc/
[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8a.so
FileUsage=1
[MySQL ODBC 8.2 Unicode Driver]
DRIVER=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so
UsageCount=1
[MySQL ODBC 8.2 ANSI Driver]
DRIVER=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8a.so
UsageCount=1
执行sql
cd servers/slapd/back-sql/rdbms_depend/mysql/
# 此为表结构
mysql -h 192.168.0.100 -u openldap -p openldap < backsql_create.sql
# 以下为测试数据
mysql -h 192.168.0.100 -u openldap -p openldap < testdb_create.sql
mysql -h 192.168.0.100 -u openldap -p openldap < testdb_data.sql
mysql -h 192.168.0.100 -u openldap -p openldap < testdb_metadata.sql
/usr/local/etc/openldap/slapd.conf
# $OpenLDAP$
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
# Define global ACLs to disable default read access.
# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral ldap://root.openldap.org
pidfile /usr/local/var/slapd.pid
argsfile /usr/local/var/slapd.args
#######################################################################
# sql database definitions
#######################################################################
database sql
suffix "dc=example,dc=com"
rootdn "cn=root,dc=example,dc=com"
rootpw ldappassword
dbname openldap
dbuser openldap
dbpasswd dbpassword
subtree_cond "ldap_entries.dn LIKE CONCAT('%',?)"
insentry_stmt "INSERT INTO ldap_entries (dn,oc_map_id,parent,keyval) VALUES (?,?,?,?)"
has_ldapinfo_dn_ru no
启动命令
/usr/local/libexec/slapd -d 1
测试
ldapsearch -x -D cn=root,dc=example,dc=com -w ldappassword -s sub -b "dc=example,dc=com" "(objectClass=*)"