我正在尝试制定计划,允许用户使用LDAP使用MySQL数据库(实际上很多)进行身份验证。更具体地说,ActiveDirectory。数据库可能会通过应用程序而不是网络访问。我有什么选择?
修改
好即可。似乎没有“官方”方式允许使用LDAP在MySQL上进行身份验证。还有哪些其他选择?我们可以将LDAP用户和密码同步到MySQL用户表吗?
答案 0 :(得分:9)
这可以使用mysql代理。要完成这项工作,您需要了解一些事项:
这两页将帮助您入门:
答案 1 :(得分:8)
您可以使用Infoscope Hellas L.P.在GPL下提供的auth_ldap插件。
可以从sourceforge下载: http://sourceforge.net/projects/mysqlauthldap/
主页: http://infoscope.gr/mysqlauthldap
该插件仍然是Beta版,仅适用于UNIX安装。
答案 2 :(得分:6)
答案 3 :(得分:1)
好像你are out of luck :(
您可以使用PostgreSQL吗?
此身份验证方法与密码类似,只是它使用LDAP作为身份验证方法。 LDAP仅用于验证用户名/密码对。因此,在LDAP可用于身份验证之前,用户必须已存在于数据库中。使用的服务器和参数在文件pg_hba.conf中的ldap关键字之后指定。此参数的格式为:
ldap[s]://servername[:port]/base dn[;prefix[;suffix]]
答案 4 :(得分:1)
现在到2017年底,我可以建议:
https://www.percona.com/doc/percona-server/LATEST/management/pam_plugin.html
Percona PAM Authentication Plugin是MySQL认证插件的免费开源实现。此插件充当MySQL服务器,MySQL客户端和PAM堆栈之间的中介。服务器插件从PAM堆栈请求身份验证,通过线路将任何来自PAM堆栈的请求和消息转发到客户端(以明文形式),并回读PAM堆栈的任何回复。
NOT 测试,我不知道它有多好。
答案 5 :(得分:0)
我个人找不到任何暗示这是可能的信息。我所看到的只是使用MySQL作为LDAP目录的数据存储。
答案 6 :(得分:0)
在我的环境中,我没有设置Samba或NSS / SSS,我也没有加入Windows域。我只是将AD服务器视为LDAP端点。所以我从上面的方向从第9步开始。
编辑:按照AfroThundr的建议添加上述链接中的说明
安装Percona PAM插件:
mysql> INSTALL PLUGIN auth_pam SONAME 'auth_pam.so';
Query OK, 0 rows affected (0.01 sec)
mysql> INSTALL PLUGIN auth_pam_compat SONAME 'auth_pam_compat.so';
Query OK, 0 rows affected (0.00 sec)
通过使用以下内容创建/etc/pam.d/mysqld,将Percona PAM配置为对LDAP进行身份验证:
auth required pam_ldap.so
account required pam_ldap.so
创建一个将通过auth_pam进行身份验证的MySQL用户:
mysql> CREATE USER user@'%' IDENTIFIED WITH auth_pam;
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON testdb.* TO user@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
以此用户身份登录并检查授权:
[root@ps-20 ~]# mysql -u user
Password: <your LDAP/AD password>
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 22
Server version: 5.7.17-13 Percona Server (GPL), Release 13, Revision fd33d43
Copyright (c) 2009-2016 Percona LLC and/or its affiliates
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> SHOW GRANTS;
+-----------------------------------------------------+
| Grants for user@% |
+-----------------------------------------------------+
| GRANT USAGE ON *.* TO 'user'@'%' |
| GRANT ALL PRIVILEGES ON `testdb`.* TO 'user'@'%' |
+---------------------------------------------------
还要注意AppArmor - 它会阻止auth尝试。您可能会在/var/log/auth.log
中看到误导性错误消息:
Feb 12 13:37:36 mysqld[15164]: PAM _pam_init_handlers: no default config /etc/pam.d/other
Feb 12 13:37:36 mysqld[15164]: PAM error reading PAM configuration file
Feb 12 13:37:36 mysqld[15164]: PAM pam_start: failed to initialize handlers
您需要将以下内容添加到/etc/apparmor.d/local/usr.sbin.mysqld
:
#include <abstractions/authentication>
并重新加载apparmor:
service apparmor restart
(感谢https://bugs.launchpad.net/ubuntu/+source/squid/+bug/1608984带领我进入AppArmor部分)
答案 7 :(得分:0)
现在距离原始文章已经十年了,对于MySQL的官方LDAP连接方法,答案终于是肯定的。但是,它确实需要您运行MySQL企业版或MySQL Cluster CGE版本。
MySQL Enterprise Authentication
仅在部分商业版本中可用
MySQL Enterprise Edition提供了随时可以使用的外部身份验证 轻松集成现有安全基础架构的模块, 包括Linux可插拔身份验证模块(PAM)和Windows 活动目录。通过从集中验证MySQL用户 目录,组织可以实现单一登录。同一用户 可以使用名称,密码和权限。这使得MySQL DBA 通过消除管理凭证的必要性来提高生产力 单个系统。它还使IT基础架构更加安全 利用现有的安全规则和流程(例如,确定 弱密码和管理密码过期)。
可以使用PAM或本机Windows OS对MySQL用户进行身份验证 服务。
- PAM的MySQL外部身份验证-使您能够配置MySQL以使用Linux PAM(可插入身份验证 模块)以通过PAM对用户进行身份验证以进行各种身份验证 方法,例如Linux密码或LDAP目录。
- 用于Windows的MySQL外部身份验证-使您能够配置MySQL以使用本机Windows服务进行身份验证 客户连接。登录到Windows的用户可以连接 从MySQL客户端程序到基于令牌的服务器 环境中的信息,而无需指定其他信息 密码。
- 新功能! LDAP的MySQL外部身份验证-使您可以配置MySQL以通过LDAP(轻型目录)对用户进行身份验证 访问协议)服务器。可以指定用户或用户组
通过LDAP规范进行详细说明。用户名/密码和SASL
支持身份验证。
答案 8 :(得分:0)
对于那些仍然像我曾经遇到过此类问题或试图通过PHP获得LDAP身份验证的问题,似乎不再支持php 7+ libmysqlclient,因此您需要在php配置中使用mysql客户端库mysqlnd和确认它包含如下所示的明文密码插件。
php mysqlnd 加载的插件mysqlnd,debug_trace,auth_plugin_mysql_native_password, auth_plugin_mysql_clear_password ,auth_plugin_sha256_password
然后通过运行以下命令来使用auth_pam_compat来安装插件并创建要认证的每个用户。
mysql> INSTALL PLUGIN auth_pam_compat SONAME 'auth_pam_compat.so';
mysql> CREATE USER testaduser IDENTIFIED WITH auth_pam_compat;
请注意,当前您无法在php 7上使用pam_auth,其中有一个错误返回:
The server requested authentication method unknown to the client