安装和卸载插件

安装和卸载插件

插件分类

按功能分类

  • 身份验证插件
    • 插件可用于多种身份验证协议
  • 连接控制插件
    • 如果客户端连续多次连接失败,会对它进行连接控制
  • 密码验证插件
    • 评估和控制密码强度
  • 半同步复制插件
    • 实现半同步复制
  • 组复制插件
    • 实现组复制
  • 线程池插件 (企业版中)
    • 用来管理连接线程,提高服务器性能
  • 审计插件 (企业版中)
    • 用来监视和记录连接和查询活动
  • 防火墙插件 (企业版中)
    • 实现了应用程序级防火墙
  • 查询重写插件
    • 用来检查服务端接收到的语句,如果有必要会对它们进行重写,比如密码
  • 版本令牌插件
    • 用于创建服务器令牌
  • 密钥环插件
    • 为敏感信息提供安全存储
  • X 插件
    • 扩展了服务端,使其可以充当文档存储
  • 测试框架插件
    • 用于测试服务器服务

按是否内置

  • 内置插件
    • 默认启动。服务器会自动识别内置插件。
    • 一些内置插件允许使用 –plugin_name[=activation_state] 选项进行更改
  • 非内置插件
    • 需要手动安装,或在选项中指定

安装插件

安装方式

  • 在命令行选项中指定插件
    • 选项

      可以使用这些选项加载插件库中的插件。

      • –plugin-load
        • 用于指定单个实例
      • –plugin-load-add
        • –plugin-load 的补充,用于指定多个实例
      • –early-plugin-load
        • 用于加载初始化内置插件和存储引擎之前必须可用的插件
      • –plugin_name[=activation_state]
        [mysqld]
        csv=ON
        blackhole=FORCE
        archive=OFF
        
        • 控制插件激活状态。
        • 插件名称中,破折号和下划线可以互换。选项值不区分大小写。
        • 有效值
          • OFF
            • 禁用插件
            • 等效于 –disable-plugin_name 和 –skip-plugin_name
          • [=ON]
            • 启用插件,如果插件初始化失败,服务器会禁用插件并启动
            • 等效于 –enable-plugin_name
          • FORCE
            • 启用插件,如果插件初始化失败,服务器不会启动
          • FORCE_PLUS_PERMANENT
            • 类似 FORCE,同时禁止运行时卸载插件
    • –skip-grant-tables 启动,不会跳过加载这些插件

  • 使用 INSTALL PLUGIN 语句安装

    服务器运行时,可以用 install plugin 语句加载位于插件库中的插件。

    • 这个语句会在 mysql.plugin 表中注册插件,后续重启会自动加载
      • 如果使用 –skip-grant-tables 跳过注册表启动,则不会加载这些插件
      • 可以使用 –plugin_name[=activation_state] 选项进行更改
    • 插件库文件名称取决于系统
      • Unix
        • .so 后缀
      • Window
        • .dll 后缀

示例

  • 编辑配置文件 /etc/my.cnf
    [mysqld]
    plugin-load-add=myplugin=somepluglib.so
    
    • 启动时设置必须使用 –plugin-load-add,否则无法加载插件,因为插件未写入注册表
  • 运行时加载
    INSTALL PLUGIN myplugin SONAME 'somepluglib.so';
    
    • 会写入注册表,永久注册

注意事项

  • 某些插件必须在启动时加载,如果动态加载会报错
  • 使用命令行和 install plugin 重复加载同一个插件名,也会报错

插件和用户自定义功能

  • 插件在安装后也可能会自动安装相关的用户定义功能 (UDF)。同时,该插件在卸载时也会自动卸载这些 UDF

卸载插件

禁用/卸载插件

  • 使用 UNINSTALL PLUGIN 语句卸载插件。
  • 如果有插件系统变量被持久化设置,需要使用 RESET PERSIST 删除

注意事项

  • 卸载插件的同时,会删除 mysql.plugin 注册表中的信息
  • 无论以哪种方式加载的插件,都可以使用 uninstall plugin 卸载
    • 无法卸载内置插件
    • 无法卸载使用 –plugin_name=FORCE_PLUS_PERMANENT 加载的插件

获取插件信息

显示所有插件的信息

  • show plugins
    mysql> show plugins;
    +---------------------------------+----------+--------------------+---------+---------+
    | Name                            | Status   | Type               | Library | License |
    +---------------------------------+----------+--------------------+---------+---------+
    | binlog                          | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
    | mysql_native_password           | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
    | sha256_password                 | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
    | caching_sha2_password           | ACTIVE   | AUTHENTICATION     | NULL    | GPL     |
    | sha2_cache_cleaner              | ACTIVE   | AUDIT              | NULL    | GPL     |
    | CSV                             | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
    | MEMORY                          | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
    | InnoDB                          | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
    | INNODB_TRX                      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_CMP                      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_CMP_RESET                | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_CMPMEM                   | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_CMPMEM_RESET             | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_CMP_PER_INDEX            | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_CMP_PER_INDEX_RESET      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_BUFFER_PAGE              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_BUFFER_PAGE_LRU          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_BUFFER_POOL_STATS        | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_TEMP_TABLE_INFO          | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_METRICS                  | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_FT_DEFAULT_STOPWORD      | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_FT_DELETED               | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_FT_BEING_DELETED         | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_FT_CONFIG                | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_FT_INDEX_CACHE           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_FT_INDEX_TABLE           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_TABLES                   | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_TABLESTATS               | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_INDEXES                  | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_TABLESPACES              | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_COLUMNS                  | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_VIRTUAL                  | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_CACHED_INDEXES           | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | INNODB_SESSION_TEMP_TABLESPACES | ACTIVE   | INFORMATION SCHEMA | NULL    | GPL     |
    | MyISAM                          | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
    | MRG_MYISAM                      | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
    | PERFORMANCE_SCHEMA              | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
    | TempTable                       | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
    | ARCHIVE                         | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
    | BLACKHOLE                       | ACTIVE   | STORAGE ENGINE     | NULL    | GPL     |
    | FEDERATED                       | DISABLED | STORAGE ENGINE     | NULL    | GPL     |
    | ngram                           | ACTIVE   | FTPARSER           | NULL    | GPL     |
    | mysqlx_cache_cleaner            | ACTIVE   | AUDIT              | NULL    | GPL     |
    | mysqlx                          | ACTIVE   | DAEMON             | NULL    | GPL     |
    +---------------------------------+----------+--------------------+---------+---------+
    
  • INFORMATION_SCHEMA.PLUGINS
    mysql> select * from information_schema.plugins limit 2\G
    *************************** 1. row ***************************
               PLUGIN_NAME: binlog
            PLUGIN_VERSION: 1.0
             PLUGIN_STATUS: ACTIVE
               PLUGIN_TYPE: STORAGE ENGINE
       PLUGIN_TYPE_VERSION: 80023.0
            PLUGIN_LIBRARY: NULL
    PLUGIN_LIBRARY_VERSION: NULL
             PLUGIN_AUTHOR: Oracle Corporation
        PLUGIN_DESCRIPTION: This is a pseudo storage engine to represent the binlog in a transaction
            PLUGIN_LICENSE: GPL
               LOAD_OPTION: FORCE
    *************************** 2. row ***************************
               PLUGIN_NAME: mysql_native_password
            PLUGIN_VERSION: 1.1
             PLUGIN_STATUS: ACTIVE
               PLUGIN_TYPE: AUTHENTICATION
       PLUGIN_TYPE_VERSION: 2.0
            PLUGIN_LIBRARY: NULL
    PLUGIN_LIBRARY_VERSION: NULL
             PLUGIN_AUTHOR: Oracle Corporation
        PLUGIN_DESCRIPTION: Native MySQL authentication
            PLUGIN_LICENSE: GPL
               LOAD_OPTION: FORCE
    2 rows in set (0.00 sec)
    

    Note: PLUGIN_LIBRARY=NULL 的,为内置插件。

显示使用 install plugin 语句注册的插件

  • mysql.plugin

    mysql> select * from mysql.plugin;
    +-------------+----------------+
    | name        | dl             |
    +-------------+----------------+
    | auth_socket | auth_socket.so |
    | clone       | mysql_clone.so |
    +-------------+----------------+
    

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注