要编译和安装插件库文件,请使用 第 4.4.3 节,“编译和安装插件库” 中的说明。要使库文件可用,请将其安装在插件目录中(由 plugin_dir
系统变量命名的目录)。
将服务器端插件注册到服务器。例如,要在服务器启动时加载插件,请使用 --plugin-load=auth_simple.so
选项,根据需要调整您的平台的 .so
后缀。
为服务器将使用 auth_simple
插件进行身份验证的用户创建一个用户
mysql> CREATE USER 'x'@'localhost'
-> IDENTIFIED WITH auth_simple;
使用客户端程序以用户 x
的身份连接到服务器。服务器端 auth_simple
插件与客户端程序通信,指示它应该使用客户端 auth_simple
插件,后者将密码发送到服务器。服务器插件应该拒绝发送空密码的连接,并接受发送非空密码的连接。以每种方式调用客户端程序以验证这一点
$> mysql --user=x --skip-password
ERROR 1045 (28000): Access denied for user 'x'@'localhost' (using password: NO)
$> mysql --user=x --password
Enter password: abc
mysql>
由于服务器插件接受任何非空密码,因此它应该被认为是不安全的。在测试插件以验证其有效性后,请在没有 --plugin-load
选项的情况下重新启动服务器,以免在服务器运行时意外加载不安全的身份验证插件。此外,使用 DROP USER 'x'@'localhost'
删除用户。
有关加载和使用身份验证插件的更多信息,请参阅 安装和卸载插件 和 可插拔身份验证。
如果您正在编写支持使用身份验证插件的客户端程序,通常这样的程序通过调用 mysql_options()
来设置 MYSQL_DEFAULT_AUTH
和 MYSQL_PLUGIN_DIR
选项来加载插件
char *plugin_dir = "path_to_plugin_dir";
char *default_auth = "plugin_name";
/* ... process command-line options ... */
mysql_options(&mysql, MYSQL_PLUGIN_DIR, plugin_dir);
mysql_options(&mysql, MYSQL_DEFAULT_AUTH, default_auth);
通常,程序还将接受 --plugin-dir
和 --default-auth
选项,允许用户覆盖默认值。
如果客户端程序需要更低级别的插件管理,则客户端库包含采用 st_mysql_client_plugin
参数的函数。参阅 C API 客户端插件接口。