要编译和安装插件库文件,请使用 第 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 客户端插件接口。