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可以将环境变量设置为正确的目录以使插件预加载成功。

  • 对于显式客户端插件加载, C API 函数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 mysql;

if(!mysql_load_plugin(&mysql, "myplugin",
                      MYSQL_CLIENT_AUTHENTICATION_PLUGIN, 0))
{
    fprintf(stderr, "Error: %s\n", mysql_error(&mysql));
    exit(-1);
}