有没有 MariaDB 5.5.56 对应 MySQL CONNECTION_CONTROL 插件
有没有 MariaDB 对应 MySQL CONNECTION_CONTROL 插件
背景
写这篇文章的目的是因为昨晚半夜突然被call起来,有一套系统的mysql数据库启动失败了。尝试了重启服务器也不行。让我协助排查一下问题出在哪。
分析过程
一开始拿到服务器IP地址,就去数据库清单里面查找有没对应的数据库,发现没有,紧接着同事解释了原因,所以没有记录在清单。同事反馈说有100多套这种数据库,为了方便后续的维护管理,我还是建议同事帮忙梳理一份清单。
首先通过ps命令查看mysql进程,确实没有进程起来。
紧接着通过history命令查看历史操作记录,发现实际是一套 mariadb 5.5.56 版本的数据库。并通过历史命令找到了数据库的日志文件,其他也可以通过/etc/my.cnf查看日志文件路径。
通过日志文件查看到错误信息,数据库在启动的时候加载了connection-control插件,但是提示错误,找不到参数connection-control-failed-connections-threshold,接着数据库就aborting了。
250607 02:51:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
250607 2:51:53 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 34467 ...
250607 2:51:54 InnoDB: The InnoDB memory heap is disabled
250607 2:51:54 InnoDB: Mutexes and rw_locks use GCC atomic builtins
250607 2:51:54 InnoDB: Compressed tables use zlib 1.2.7
250607 2:51:54 InnoDB: Using Linux native AIO
250607 2:51:54 InnoDB: Initializing buffer pool, size = 128.0M
250607 2:51:54 InnoDB: Completed initialization of buffer pool
250607 2:51:54 InnoDB: highest supported file format is Barracuda.
250607 2:51:54 InnoDB: Waiting for the background threads to start
250607 2:51:55 Percona XtraDB (http://www.percona.com) 5.5.52-MariaDB-38.3 started; log sequence number 75279716956
250607 2:51:55 [Note] Plugin 'FEEDBACK' is disabled.
250607 2:51:55 [ERROR] Function 'server_audit' already exists
250607 2:51:55 [Warning] Couldn't load plugin named 'server_audit' with soname 'server_audit.so'.
250607 2:51:55 server_audit: MariaDB Audit Plugin version 1.4.1 STARTED.
250607 2:51:55 server_audit: logging started to the file /var/log/mariadb/server_audit.log.
250607 2:51:55 [ERROR] /usr/libexec/mysqld: unknown variable 'connection-control-failed-connections-threshold=5'
250607 2:51:55 [ERROR] Aborting <<<<<<<<<<<<<<<<<<<<<<<<<<<<<250607 2:51:55 server_audit: STOPPED
250607 2:51:55 InnoDB: Starting shutdown...
250607 2:51:59 InnoDB: Shutdown completed; log sequence number 75279716956
250607 2:51:59 [Note] /usr/libexec/mysqld: Shutdown complete250607 02:51:59 mysqld_safe mysqld from pid file /var/run/mariadb/mariadb.pid ended
查看/etc/my.cnf配置信息,确实是增加连接控制的参数。同事反馈是由于去年底等保安全加固做的变更。
]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
bind-address=127.0.0.1
#####MariaDB Audit plugin######
##加载审计插件
plugin_load=server_audit=server_audit.so
##启用审计日志
server_audit_logging=on
##设置审计日志目录
##server_audit_file_path='/usr/local/mysql/log'
server_audit_file_path='/var/log/mariadb/'
##默认记录所有SQL语句
##server_audit_events=CONNECT,TABLE,QUERY_DDL,QUERY_DCL,QUERY_DML_NO_SELECT
##日志转轮数量,默认9
server_audit_file_rotations=128
##现在审计日志文件大小,默认1000000byte
server_audit_file_rotate_size=1G
server_audit_file_rotate_now=ON#connection-control-failed-connections-threshold=5 <<<<<<
#connection-control-min-connection-delay=108000 <<<<<<<
#max_password_errors=5[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
为了尽快恢复业务以及保存现场的环境,备份了my.cnf文件后,把连接控制的参数注释了,重启启动数据库正常。
数据库启动成功了,紧接着让业务重启服务,连接数据库成功,业务恢复正常。
从启动日志中,可以看到还是有几个ERROR的出现,提示mysql.user, mysql.proc表应该是有损坏了。由于没有影响到业务,所以就没有继续处理。
250607 03:01:53 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
250607 3:01:53 [Note] /usr/libexec/mysqld (mysqld 5.5.56-MariaDB) starting as process 54307 ...
250607 3:01:53 InnoDB: The InnoDB memory heap is disabled
250607 3:01:53 InnoDB: Mutexes and rw_locks use GCC atomic builtins
250607 3:01:53 InnoDB: Compressed tables use zlib 1.2.7
250607 3:01:53 InnoDB: Using Linux native AIO
250607 3:01:53 InnoDB: Initializing buffer pool, size = 128.0M
250607 3:01:53 InnoDB: Completed initialization of buffer pool
250607 3:01:53 InnoDB: highest supported file format is Barracuda.
250607 3:01:53 InnoDB: Waiting for the background threads to start
250607 3:01:54 Percona XtraDB (http://www.percona.com) 5.5.52-MariaDB-38.3 started; log sequence number 75279716956
250607 3:01:54 [Note] Plugin 'FEEDBACK' is disabled.
250607 3:01:54 [ERROR] Function 'server_audit' already exists
250607 3:01:54 [Warning] Couldn't load plugin named 'server_audit' with soname 'server_audit.so'.
250607 3:01:54 server_audit: MariaDB Audit Plugin version 1.4.1 STARTED.
250607 3:01:54 server_audit: logging started to the file /var/log/mariadb/server_audit.log.
250607 3:01:54 [Note] Server socket created on IP: '127.0.0.1'.
250607 3:01:54 [ERROR] mysqld: Table './mysql/user' is marked as crashed and should be repaired
250607 3:01:54 [Warning] Checking table: './mysql/user'
250607 3:01:54 [ERROR] mysql.user: 1 client is using or hasn't closed the table properly
250607 3:01:54 [Note] Event Scheduler: Loaded 0 events
250607 3:01:54 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.56-MariaDB' socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server
250607 11:51:36 [ERROR] mysqld: Table './mysql/proc' is marked as crashed and should be repaired
250607 11:51:36 [Warning] Checking table: './mysql/proc'
第二天继续排查连接控制参数的问题,发现plugins目录下没有connection_control.so插件,应该是当时同事为了等保,直接在my.cnf文件里面添加了配置,而没有考虑到需要先安装connection_control.so插件。
在测试环境安装了一套同样版本的mariadb数据库,安装完同样发现是没有connection_control.so插件的。为了验证这个问题,需要找到mariadb对应的插件。
找到以下一个案例:
https://mariadb.com/kb/en/is-there-a-mariadb-equivalent-to-mysql-connection_control-plugin/
经过一番搜索,mysql在5.6.35版本开始加入了这个连接插件。
从其他网站上找到相关的案例 MySQL 与 mariadb的 connection_control插件并不通用。
尝试安装MySQL的connection_control.so插件
尝试从mysql5.6.35版本的lib目录下的connection_control.so文件拷贝到到mariadb的lib/plugin目录,但是在安装的时候出现错误了,验证不能通用。
[root@exam01 plugin]# mysql -uroot -hexam01 -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.56-MariaDB MariaDB ServerCopyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';
ERROR 1126 (HY000): Can't open shared library '/mariadb/lib/plugin/connection_control.so' (errno: 2, undefined symbol: my_getsystime)
mysql>
mysql> INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';
ERROR 1126 (HY000): Can't open shared library '/mariadb/lib/plugin/connection_control.so' (errno: 2, undefined symbol: my_getsystime)
mysql>
mysql>
参考文档:
chrome-extension://jkhojcaggkaojlhfddocjkkphfdkejeg/pdf/viewer.html?file=https%3A%2F%2Fdownloads.mysql.com%2Fdocs%2Fmysql-5.6-relnotes-en.a4.pdf
https://dev.mysql.com/doc/refman/5.7/en/connection-control-plugin-installation.html
https://docs.oracle.com/cd/E19957-01/mysql-refman-5.5/
相关文章:

有没有 MariaDB 5.5.56 对应 MySQL CONNECTION_CONTROL 插件
有没有 MariaDB 对应 MySQL CONNECTION_CONTROL 插件 背景 写这篇文章的目的是因为昨晚半夜突然被call起来,有一套系统的mysql数据库启动失败了。尝试了重启服务器也不行。让我协助排查一下问题出在哪。 分析过程 一开始拿到服务器IP地址,就去数据库…...
setting up Activiti BPMN Workflow Engine with Spring Boot
spring.activiti.database-schema-update: true Controls how Activiti handles its database tables on startup. Options: true – Default. Creates or updates tables automatically if missing. ✅ Good for development. false – Disables auto-update. Throws an err…...
使用 C/C++ 和 OpenCV 提取图像的感兴趣区域 (ROI)
使用 C/C 和 OpenCV 提取图像的感兴趣区域 (ROI) 在计算机视觉中,感兴趣区域 (Region of Interest, ROI) 是指从图像中选择的一个特定区域,我们希望对其进行进一步的处理或分析。例如,在人脸识别中,ROI 就是包含人脸的矩形框。Op…...

TripGenie:畅游济南旅行规划助手:个人工作纪实(二十二)
这周,我进行了历史记录的设计与制作,我对于每一个用户与智能体交互得出的历史行程的数据进行了存储与可视化展示。 首先,我设置了一个csv文件存储每一个得出的行程规划,注意这里的地图我设置了一个全路径进行存储,这样…...

如何用AI高效运营1000+Tiktok矩阵账号
在当今数字化的时代,Tiktok 矩阵账号运营成为了众多企业和个人追求流量与变现的重要手段。然而,面对众多的账号管理,如何高效运营成为了关键。此时,AI 工具的出现为我们提供了强有力的支持。 一、Tiktok 矩阵账号的重要性 Tiktok…...
杭州瑞盟 MS35774/MS35774A 低噪声256细分微步进电机驱动,用于空调风门电机驱动,香薰电机驱动
杭州瑞盟 MS35774/MS35774A 低噪声256细分微步进电机驱动,用于空调风门电机驱动,香薰电机驱动 简述 MS35774/MS35774A 是一款高精度、低噪声的两相步进 电机驱动芯片,芯片内置功率 MOSFET ,长时间工作的平均电 流可以达到 1…...

【论文解读】Toolformer: 语言模型自学使用工具
1st author: Timo Schick - Google Scholar paper: Toolformer: Language Models Can Teach Themselves to Use Tools | OpenReview NeurIPS 2023 oral code: lucidrains/toolformer-pytorch: Implementation of Toolformer, Language Models That Can Use Tools, by…...

408第一季 - 数据结构 - 线性表II
链表 头节点始终指向第一个 头节点的好处: 第一个好处 这里L是头节点 可以发现,删除第一个也可以统一了 第二个好处 这是无头节点,空和非空指向的不一样 然后有头节点就可以统一了! 双链表 插入 第一步要在第四步之前&…...
网络通讯知识——通讯分层介绍,gRPC,RabbitMQ分层
网络通讯分层 网络通讯分层是为了将复杂的网络通信问题分解为多个独立、可管理的层次,每个层次专注于特定功能。目前主流的分层模型包括OSI七层模型和TCP/IP四层(或五层)模型,以下是详细解析: 一、OSI七层模型&#…...
Linux与Windows切换使用Obsidian,出现 unexplained changes 问题的解决
如果你的Obsidian文档在Linux与Windows间来回切换,可能会涉及到文件的保存换行符问题,但这样的话就容易导致一个问题,那就是内容无差异,Obsidian却提示unexplained changes,Windows系统下的解决方法如下,找…...

基于VMD-LSTM融合方法的F10.7指数预报
F10.7 Daily Forecast Using LSTM Combined With VMD Method F10.7 solar radiation flux is a well-known parameter that is closely linked to solar activity, serving as a key index for measuring the level of solar activity. In this study, the …...

35 C 语言字符串转数值函数详解:strtof、strtod、strtold(含 errno 处理、ERANGE 错误)
1 strtof() 函数 1.1 函数原型 #include <stdlib.h> // 必须包含这个头文件才能使用 strtof() #include <errno.h> // 包含 errno 和 ERANGE #include <float.h> // 包含 FlOAT_MAX 和 FLOAT_MIN #include <math.h> // 包含 HUGE_VALF(inf)float…...
解决 idea提示`SQL dialect is not configured` 问题
前言 在 Java 开发中,尤其是使用 IntelliJ IDEA 或 MyBatis 等框架时,开发者常会遇到 SQL dialect is not configured 的警告或错误。这一问题不仅影响代码的高亮和智能提示功能,还可能导致表结构解析失败、语法校验失效等问题。 一、问题分…...
springboot的test模块使用Autowired注入失败
springboot的test模块使用Autowired注入失败的原因: 注入失败的原因可能是用了junit4的包的Test注解 import org.junit.Test;解决方法:再加上RunWith(SpringRunner.class)注解即可 或者把Test由junit4改成junit5的注解,就不用加上RunWith&…...

日志收集工具-Filebeat
提示:windows 环境下 Filebeat 的安装与使用 文章目录 前言一、安装二、配置部署三、启动测试 前言 Filebeat 一般用于日志采集,由两部分组成 :Harvesters 和 prospector Harvesters采集器:逐行读取单个文件的内容,并…...
【PCIe总线】 -- PCI、PCIe相关实现
PCI、PCIe相关概念和知识点 【PCIe总线】-- PCI、PCIe基础知识点整理 【PCIe】非常适合初学的pcie博客(PCIe知识整理) PCIe具体实现 【PCIe】如何获取PCIe的BAR空间大小?...

Vue3学习(4)- computed的使用
1. 简述与使用 作用:computed 用于基于响应式数据派生出新值,其值会自动缓存并在依赖变化时更新。 缓存机制:依赖未变化时直接返回缓存值,避免重复计算(通过 _dirty 标志位实现)。响应式更新&…...

手机上网可以固定ip地址吗?详细解析
在移动互联网时代,手机已成为人们日常上网的主要设备之一。无论是工作、学习还是娱乐,稳定的网络连接都至关重要。许多用户对IP地址的概念有所了解,尤其是固定IP地址的需求。那么,手机上网能否固定IP地址?又该如何实现…...
电脑同时连接内网和外网的方法,附外网连接局域网的操作设置
对于工作一般都设置在内网网段中,而同时由于需求需要连接外网,一般只能通过内网和外网的不断切换进行设置,如果可以同时连接内网和外网会更加便利,同时连接内网和外网方法具体如下。 一、电脑怎么弄可以同时连接内网和外网&#…...

如何在Unity中实现点击一个按钮跳转到哔哩哔哩
1.创建一个按钮 2.编写一个脚本(你可以把链接改成你想要跳转的网站) using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class JumpToBilibili : MonoBehaviour {void Start(){gameObject.…...
DHCP 动态主机配置协议(Dynamic host configuration protocol)逐层封装过程: DHCP --> UDP --> IP
📦 DHCP 报文逐层封装结构(自上而下) 应用层(DHCP 报文) ↓ 传输层(UDP 首部) ↓ 网络层(IP 首部) ↓ 数据链路层(以太网帧头) ↓ 物理层&#x…...

PySide6 GUI 学习笔记——常用类及控件使用方法(单行文本控件QLineEdit)
文章目录 QLineEdit 介绍常用方法QLineEdit.EchoMode 取值光标相关方法文本选择方法输入格式化字符(Input Mask)常用信号QLineEdit 实例 QLineEdit 介绍 QLineEdit 是 PySide6(Qt for Python)中用于单行文本输入的控件。它支持文本…...

【数据结构】6. 时间与空间复杂度
文章目录 一、算法效率1、算法的复杂度 二、时间复杂度1、时间复杂度的概念2、大O的渐进表示法3、常见时间复杂度计算1)实例12)实例23)实例34)实例45)实例56)实例67)实例78)实例8 三…...
Python 函数全攻略:函数进阶(生成器、闭包、内置函数、装饰器、推导式)
一、默认参数中的易错点 问题: 当函数的默认参数是可变类型(如 list, dict)时,存在“坑”。 现象: def func(a2=[]): # a2 默认是一个空列表a2.append(2)print(a2)func() # 第一次调用,a2 默认为 [],输出 [2] func([]) # 传入新列表,输出 [2] func([1]) # 传入带元素的…...

基于springboot的藏文古籍系统
博主介绍:高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实实在…...

重构城市应急指挥布控策略 ——无人机智能视频监控的破局之道
在突发事件、高空巡查、边远区域布控中,传统摄像头常常“看不到、跟不上、调不动”。无人机智能视频监控系统,打破地面视角局限,以“高空布控 AI分析 实时响应”赋能政企单位智能化管理。在城市应急指挥中心的大屏上,一场暴雨正…...

声音信号的基频检测(python版本)
import math import wave import array import functools from abc import ABC, abstractmethod import matplotlib import matplotlib.pyplot as plt from matplotlib.gridspec import GridSpec import os import sys# 设计模式部分 class PreprocessStrategy(ABC):"&q…...

STM32 控制12VRGB灯带颜色亮度调节,TFTLCD显示
接了一个同学的小项目,要实现控制一个实体,控制灯带的亮度为红/绿/蓝/白/黄以及亮度的叠加。 时间要的比较急,要两天实现,因此不能打板,只能采用现有模块拼接。 一. 实施方案 一开始觉得很简单,就是使用五…...
Hive开窗函数的进阶SQL案例
一、开窗函数基础 1. 定义与作用 开窗函数(Window Functions)在保留原始行数据的同时,对分组内的行进行聚合或排序分析,常用于累计计算、排名、移动平均等场景。与普通聚合函数(如SUM、AVG)的区别…...

【JJ斗地主-注册安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞 …...