struct st_mysql_client_plugin *
mysql_load_plugin(MYSQL *mysql,
const char *name,
int type,
int argc,
...)
加载一个 MySQL 客户端插件,由名称和类型指定。如果类型无效或插件无法加载,则会发生错误。
无法加载相同类型的多个插件。如果尝试加载已加载类型的插件,则会发生错误。
按如下方式指定参数
mysql
: 指向MYSQL
结构的指针。插件 API 不需要连接到 MySQL 服务器,但此结构必须正确初始化。该结构用于获取连接相关信息。name
: 要加载的插件的名称。type
: 要加载的插件类型,或 -1 以禁用类型检查。如果类型不是 -1,则仅考虑与类型匹配的插件进行加载。argc
: 以下参数的数量(如果不存在则为 0)。对任何以下参数的解释取决于插件类型。
另一种导致插件加载的方法是将 LIBMYSQL_PLUGINS
环境变量设置为以分号分隔的插件名称列表。例如
export LIBMYSQL_PLUGINS="myplugin1;myplugin2"
由 LIBMYSQL_PLUGINS
命名的插件在客户端程序调用 mysql_library_init()
时加载。如果加载这些插件时出现问题,不会报告任何错误。
LIBMYSQL_PLUGIN_DIR
环境变量可以设置为要查找客户端插件的目录的路径名。此变量以两种方式使用
在客户端插件预加载期间,
--plugin-dir
选项的值不可用,因此客户端插件加载将失败,除非插件位于硬编码的默认目录中。如果插件位于其他位置,则可以将LIBMYSQL_PLUGIN_DIR
环境变量设置为正确的目录,以使插件预加载成功。对于显式客户端插件加载,
mysql_load_plugin()
和mysql_load_plugin_v()
C API 函数如果存在则使用LIBMYSQL_PLUGIN_DIR
值,并且未给出--plugin-dir
选项。如果给出--plugin-dir
,则mysql_load_plugin()
和mysql_load_plugin_v()
会忽略LIBMYSQL_PLUGIN_DIR
。
要检查错误,请调用 mysql_error()
或 mysql_errno()
函数。参见 第 5.4.16 节,“mysql_error()” 和 第 5.4.15 节,“mysql_errno()”。
MYSQL mysql;
if(!mysql_load_plugin(&mysql, "myplugin",
MYSQL_CLIENT_AUTHENTICATION_PLUGIN, 0))
{
fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
exit(-1);
}