MySQL的限制和限制/可插入认证的限制

第9章可插入认证的限制

本节的第一部分描述了对可插入身份验证框架适用性的一般限制可插入身份验证.第二部分描述了第三方连接器开发人员如何确定连接器可以在多大程度上利用可插入身份验证功能,以及采取哪些步骤来提高兼容性。

这个词本地身份验证对象中存储的密码进行身份验证mysql.user系统表。在实现可插入身份验证之前,这与旧的MySQL服务器提供的身份验证方法相同。Windows本地身份验证指使用已登录Windows的用户的凭证进行身份验证,由Windows本地身份验证插件(窗口插件短)。

通用可插式身份验证限制

  • 连接器/ c++:使用此连接器的客户机只能通过使用本机身份验证的帐户连接到服务器。

    例外:如果连接器被构建为链接到,则支持可插入身份验证libmysqlclient动态地(而不是静态地)加载当前版本的libmysqlclient如果安装了该版本,或者连接器根据当前从源代码重新编译到链接libmysqlclient

    有关编写连接器以处理来自服务器的关于默认服务器端身份验证插件的信息的信息,请参见认证插件连接器写入注意事项

  • 连接器/网:使用Connector/NET的客户机可以通过使用本机身份验证或Windows本机身份验证的帐户连接到服务器。

  • 连接器/ PHP:使用此连接器的客户机只能通过使用本机身份验证的帐户连接到服务器,当使用PHP的MySQL本机驱动程序编译时(mysqlnd).

  • Windows本地身份验证:通过使用Windows插件的帐户连接需要Windows域设置。如果没有它,则使用NTLM身份验证,然后只能进行本地连接;也就是说,客户端和服务器必须运行在同一台计算机上。

  • 代理用户:代理用户支持的范围是,客户端可以通过通过实现代理用户功能的插件(即可以返回与连接用户不同的用户名的插件)进行认证的帐户进行连接。例如,PAM和Windows插件支持代理用户。的mysql_native_password而且sha256_password认证插件默认情况下不支持代理用户,但可以配置为这样做;看到代理用户映射的服务器支持

  • 复制:副本不仅可以使用本机身份验证使用复制用户帐户,还可以通过使用非本机身份验证的复制用户帐户进行连接(如果所需的客户端插件可用)。如果插件内建libmysqlclient,默认可用。否则,插件必须安装在副本端以副本命名的目录中plugin_dir系统变量。

  • 联邦表:一个联邦表只能通过使用本机身份验证的远程服务器上的帐户访问远端表。

可插入身份验证和第三方连接器

第三方连接器开发人员可以使用以下指导方针来确定连接器是否准备好利用可插入身份验证功能,以及采取哪些步骤来变得更加兼容:

  • 未做任何更改的现有连接器使用本机身份验证,并且使用该连接器的客户机只能通过使用本机身份验证的帐户连接到服务器。但是,您应该根据服务器的最新版本测试连接器,以验证这样的连接仍然可以正常工作。

    例外:如果连接到,连接器可能使用可插入身份验证,而不需要进行任何更改libmysqlclient动态地(而不是静态地)加载当前版本的libmysqlclient如果安装了该版本。

  • 要利用可插入的身份验证功能,需要一个连接器libmysqlclient的当前版本应该重新链接libmysqlclient.这使连接器能够通过需要现在内建的客户端插件的帐户支持连接libmysqlclient(例如PAM身份验证所需的明文插件和Windows本机身份验证所需的Windows插件)。用电流连接libmysqlclient也使连接器能够访问安装在默认MySQL插件目录中的客户端插件(通常是由本地服务器的默认值命名的目录)plugin_dir系统变量)。

    如果连接器链接到libmysqlclient动态地,它必须确保更新的版本libmysqlclient安装在客户端主机上,并且连接器在运行时加载它。

  • 连接器支持给定身份验证方法的另一种方法是直接在客户机/服务器协议中实现它。Connector/NET使用这种方法提供对Windows本机身份验证的支持。

  • 如果连接器应该能够从不同于默认插件目录的目录加载客户端插件,那么它必须为客户端用户实现一些指定目录的方法。可能的做法包括使用命令行选项或环境变量,连接器可以从中获取目录名。标准的MySQL客户端程序,如mysql而且mysqladmin实现一个——plugin-dir选择。另请参阅C API客户端插件接口

  • 如本节前面所述,连接器对代理用户的支持取决于它所支持的身份验证方法是否允许代理用户。