9.2.4 mysql_load_plugin()

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

返回值

如果插件成功加载,则返回指向该插件的指针。如果发生错误,则返回 NULL

错误

要检查错误,请调用 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);
}