Debian MariaDB插件使用教程
导读:Debian 上 MariaDB 插件使用教程 一 环境准备与插件管理基础 确认版本与插件目录 查看版本:mysql -V 查看插件目录:SHOW VARIABLES LIKE ‘plugin_dir’; 插件目录不在默认路径时,可...
Debian 上 MariaDB 插件使用教程
一 环境准备与插件管理基础
- 确认版本与插件目录
- 查看版本:mysql -V
- 查看插件目录:SHOW VARIABLES LIKE ‘plugin_dir’;
- 插件目录不在默认路径时,可在配置中指定:
- 编辑文件:/etc/mysql/mariadb.conf.d/50-server.cnf
- 添加:plugin_dir=/usr/lib/x86_64-linux-gnu/mariadb/plugin
- 插件管理常用 SQL
- 安装:INSTALL PLUGIN plugin_name SONAME ‘shared_library.so’;
- 卸载:UNINSTALL PLUGIN plugin_name;
- 在线帮助:HELP ‘INSTALL PLUGIN’;
- 说明:INSTALL PLUGIN 会将插件写入 mysql.plugin 表,后续重启会自动加载;插件库必须位于 plugin_dir 下,文件名需包含扩展名(如 .so)。
二 实战一 身份认证插件 unix_socket 与 mysql_native_password
- 场景A 使用 unix_socket 实现本机免密登录(Debian 常见默认)
- 特点:依赖 Linux 的 SO_PEERCRED,仅当操作系统用户与数据库用户同名时可免密登录本机套接字。
- 检查与登录:
- 查看 root 认证方式:SELECT user, plugin FROM mysql.user WHERE user=‘root’;
- 若 plugin 为 unix_socket,本地可直接:mysql -u root -p(回车后无需密码)
- 场景B 改为密码登录(mysql_native_password)
- 设置 root 密码并切换插件(本机套接字或远程登录均可用密码):
- mysql -u root -p
- 执行(将 ‘YourStrongPass’ 替换为你的密码):
- ALTER USER ‘root’@‘localhost’ IDENTIFIED VIA mysql_native_password USING PASSWORD(‘YourStrongPass’);
- FLUSH PRIVILEGES;
- 如需允许远程连接,可调整绑定地址并重启服务:
- 编辑:/etc/mysql/mariadb.conf.d/50-server.cnf
- 设置:bind-address=0.0.0.0(或注释掉该行)
- 重启:systemctl restart mariadb
- 设置 root 密码并切换插件(本机套接字或远程登录均可用密码):
- 安全提示:生产环境不建议长期使用 unix_socket 免密,建议为 root 设置强密码并限制来源 IP。
三 实战二 半同步复制插件 rpl_semi_sync
- 适用:提升主从复制的可靠性,主库等待至少一个从库确认收到事务后再提交。
- 安装与启用(主库与从库分别执行)
- 主库安装并启用:
- INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;
- SET GLOBAL rpl_semi_sync_master_enabled=1;
- SET GLOBAL rpl_semi_sync_master_timeout=10000; (超时 10 秒)
- 从库安装并启用:
- INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so’;
- SET GLOBAL rpl_semi_sync_slave_enabled=1;
- 持久化(可选,写入配置文件)
- 在 /etc/mysql/mariadb.conf.d/ 下创建 50-semisync.cnf:
- [mysqld]
- rpl_semi_sync_master_enabled=1
- rpl_semi_sync_slave_enabled=1
- rpl_semi_sync_master_timeout=10000
- 重启:systemctl restart mariadb
- 在 /etc/mysql/mariadb.conf.d/ 下创建 50-semisync.cnf:
- 主库安装并启用:
- 验证
- 主库:SHOW STATUS LIKE ‘Rpl_semi_sync_master_status%’;
- 从库:SHOW STATUS LIKE ‘Rpl_semi_sync_slave_status%’;
- 卸载示例:UNINSTALL PLUGIN rpl_semi_sync_slave; 。
四 实战三 审计插件 server_audit 在 MySQL 5.7 上的使用
- 背景:MySQL 社区版不带审计功能,可使用 MariaDB 的审计插件为 MySQL 5.7 增加审计能力。
- 步骤
- 获取插件库
- 从 MariaDB 发行包中复制 server_audit.so 到 MySQL 的插件目录(先查 plugin_dir)。
- 安装与启用
- INSTALL PLUGIN server_audit SONAME ‘server_audit.so’;
- 常用变量(按需设置):
- SET GLOBAL server_audit_logging=ON;
- SET GLOBAL server_audit_events=‘CONNECT,QUERY,TABLE’;
- SET GLOBAL server_audit_file_path=‘/var/log/mysql/audit.log’;
- 持久化(可选)
- 在 MySQL 配置文件 [mysqld] 中加入:
- server_audit_logging=ON
- server_audit_events=CONNECT,QUERY,TABLE
- server_audit_file_path=/var/log/mysql/audit.log
- 重启:systemctl restart mysql
- 在 MySQL 配置文件 [mysqld] 中加入:
- 获取插件库
- 注意
- 插件版本需与 MariaDB 版本匹配,不同版本功能差异较大,请参考官方审计插件文档与版本对应说明。
五 常见问题与排查
- 插件库找不到
- 确认 .so 位于 SHOW VARIABLES LIKE ‘plugin_dir’; 返回目录;必要时在 50-server.cnf 中显式设置 plugin_dir 并重启。
- 安装时报 “Can’t find symbol …”
- 动态插件编译需定义宏:gcc … -DMYSQL_DYNAMIC_PLUGIN -shared -fPIC …;并确保包含 MariaDB 开发头文件。
- unix_socket 免密不生效
- 仅在本机有效且要求操作系统用户名与数据库用户名一致;检查插件是否为 unix_socket,并确认使用本地套接字连接(mysql -u root -p 而非 TCP 127.0.0.1)。
- 远程仍无法用密码登录
- 检查 bind-address、用户 host(如 ‘root’@‘%’)、防火墙与 TLS/SSL 配置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian MariaDB插件使用教程
本文地址: https://pptw.com/jishu/749337.html
