4.4.9.3使用认证插件

要编译和安装插件库文件,请使用第4.4.3节,“编译和安装插件库”.要使库文件可用,请将其安装在plugin目录中(以plugin_dir系统变量)。

向服务器注册服务器端插件。例如,要在服务器启动时加载插件,请使用——plugin-load = auth_simple.so选项,调整所以必要时为您的平台加上后缀。

创建一个用户,服务器将为其使用auth_simple插件身份验证:

mysql> CREATE USER 'x'@'localhost' -> IDENTIFIED WITH auth_simple;

使用客户端程序作为用户连接到服务器x.服务器端auth_simplePlugin与客户端程序通信,它应该使用客户端auth_simple插件,后者将密码发送到服务器。服务器插件应该拒绝发送空密码的连接,并接受发送非空密码的连接。通过调用客户端程序来验证这一点:

mysql——user=x——skip-password ERROR 1045 (28000): Access denied for user 'x'@'localhost' (using password: NO

因为服务器插件接受任何非空密码,所以应该认为它是不安全的。在测试插件以验证其工作后,重新启动服务器——plugin-load选项,以免让服务器运行时加载了不安全的身份验证插件。此外,删除用户与把用户“x”@“localhost”

有关加载和使用身份验证插件的其他信息,请参见安装和卸载插件,可插入身份验证

如果你正在编写一个支持使用认证插件的客户端程序,通常这样的程序会通过调用来加载一个插件mysql_options ()设置MYSQL_DEFAULT_AUTHMYSQL_PLUGIN_DIR选项:

Char *plugin_dir = "path_to_plugin_dir”;default_auth = "plugin_name”;/ *……处理命令行选项…*/ 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客户端插件接口