插件分类
按功能分类
- 身份验证插件
- 插件可用于多种身份验证协议
- 连接控制插件
- 如果客户端连续多次连接失败,会对它进行连接控制
- 密码验证插件
- 评估和控制密码强度
- 半同步复制插件
- 实现半同步复制
- 组复制插件
- 实现组复制
- 线程池插件 (企业版中)
- 用来管理连接线程,提高服务器性能
- 审计插件 (企业版中)
- 用来监视和记录连接和查询活动
- 防火墙插件 (企业版中)
- 实现了应用程序级防火墙
- 查询重写插件
- 用来检查服务端接收到的语句,如果有必要会对它们进行重写,比如密码
- 版本令牌插件
- 用于创建服务器令牌
- 密钥环插件
- 为敏感信息提供安全存储
- 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,同时禁止运行时卸载插件
- OFF
- –plugin-load
- –skip-grant-tables 启动,不会跳过加载这些插件
- 选项
-
使用 INSTALL PLUGIN 语句安装
服务器运行时,可以用 install plugin 语句加载位于插件库中的插件。
- 这个语句会在 mysql.plugin 表中注册插件,后续重启会自动加载
- 如果使用 –skip-grant-tables 跳过注册表启动,则不会加载这些插件
- 可以使用 –plugin_name[=activation_state] 选项进行更改
- 插件库文件名称取决于系统
- Unix
- .so 后缀
- Window
- .dll 后缀
- Unix
- 这个语句会在 mysql.plugin 表中注册插件,后续重启会自动加载
示例
- 编辑配置文件 /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 | +-------------+----------------+