2017-02-02 32 views
11

我有MySQL代理正在运行,并且我有一个功能为read_auth()的LUA,但是在认证过程中传递的密码被散列(如预期的那样)。mysql代理明文密码

我需要他们的格式,我可以使用和张贴,所以明文。在MySQL客户端上启用明文插件没有任何作用,我怀疑MySQL代理并不要求客户端以明文方式发送它,所以默认为散列。

所以基本上:你有什么想法,我将如何能够在MySQL代理的read_auth()函数中获得明文验证细节?

注意:我的最终目标是使用LDAP进行身份验证,但是我可以获取密码(无论是否为散列)的唯一方法是实际绑定到LDAP,但无法通过搜索来获取密码。

回答

8

MySQL网络协议不允许以明文形式发送密码,所有您可以捕获的都是加密版本。


但是,如果你要发送(从客户机到服务器)明文,客户端明文插件应该工作...

在MySQL 5.5.27中,使无意使用这个插件的可能性较小,需要客户端明确启用它。这可以通过以下几种方式完成:

将LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN环境变量设置为以1,Y或y开头的值。这使插件可用于所有客户端连接。

mysql,mysqladmin和mysqlslap客户端程序支持--enable-cleartext-plugin选项,该选项在每个调用的基础上启用该插件。

mysql_options()C API函数支持MYSQL_ENABLE_CLEARTEXT_PLUGIN选项,该选项基于每个连接启用插件。此外,任何使用libmysqlclient并读取选项文件的程序都可以通过在客户端库读取的选项组中包含enable-cleartext-plugin选项来启用该插件。


或者,还有一些其他选项可以使用LDAP进行身份验证。例如,您可以使用PAM身份验证插件来让您使用任何可用的PAM模块来提供身份验证服务,并且您还可以使用角色并将用户名映射到角色,以便您可以使用具有权限的角色以及映射到这些角色的许多用户名。你可以在这里找到更多的信息。

更多资源:

+0

我假设的PAM认证插件无法与代理一起使用? –

+0

Pam认证需要企业版的Mysql,但有几个开源实现。我不明白为什么它不能用于代理。我在旅行,所以我无法快速提供链接。但是如果我这样做并且需要代理,我会使用角色方法。 –

+0

只是另一个快速评论 - 你有没有办法在应用程序级别处理这个问题?编程你的出路,如果你愿意... –