MySQL 二进制日志binlog解析

MySQL 二进制日志binlog解析

一、binlog2sql工具

一)、叙述

1.描述

binlog2sql是一款用于解析 MySQL 二进制日志(binlog)的工具,通过它能够把 binlog 转换为可直接执行的 SQL 语句或者反向 SQL(用于数据回滚)。 适用的数据库:

  • MySQL
    binlog2sql 原生支持 MySQL 5.6+ 版本,兼容 InnoDB、MyISAM 等存储引擎,需开启 binlog 功能(配置 log-bin=mysql-bin)。
  • MariaDB
    作为 MySQL 的分支,MariaDB 通常也能使用 binlog2sql,但需确保 binlog 格式兼容(如 ROW 格式)。
  • TokuDB/Percona Server
    基于 MySQL 内核的数据库(如 TokuDB、Percona Server)在使用 MySQL 原生 binlog 时也可兼容。

2.binlog 格式要求

binlog2sql 对 binlog 格式有严格要求:

  • 推荐格式:ROW
    记录每行数据的变更细节,支持 --flashback 反向 SQL 生成。
    配置:binlog_format = ROW
  • 支持格式:MIXED
    混合模式,部分语句可能转为 STATEMENT 格式,需确保关键操作使用 ROW 模式。
  • 不支持格式:STATEMENT
    仅记录 SQL 语句,无法准确恢复数据变更(如 UPDATE 无前后值对比)。

3.限制(对比mysqlbinlog)

  • mysql server必须开启,离线模式下不能解析
  • 参数 binlog_row_image 必须为FULL,暂不支持MINIMAL
  • 解析速度不如mysqlbinlog

4.优点(对比mysqlbinlog)

  • 纯Python开发,安装与使用都很简单
  • 自带flashback、no-primary-key解析模式,无需再装补丁
  • flashback模式下,更适合闪回实战
  • 解析为标准SQL,方便理解、筛选
  • 代码容易改造,可以支持更多个性化解析

二)、安装

1.安装前提条件

  • Python 环境
    需要 Python 3.6+,建议使用 Python 3.8 或更高版本。
  • MySQL 客户端库
    Ubuntu/Debian:sudo apt-get install python3-dev libmysqlclient-dev
    CentOS/RHEL:sudo yum install python3-devel mysql-devel
    macOS(使用 Homebrew):brew install mysql-connector-c

2.安装 binlog2sql

复制代码
# 克隆仓库
git clone https://github.com/danfengcao/binlog2sql.git
cd binlog2sql

# 安装依赖包
pip3 install -r requirements.txt

git下载地址
博客下载地址

3.验证安装

复制代码
python binlog2sql.py --help

4.对于生产环境数据恢复,推荐流程:

复制代码
生产binlog文件 → 拷贝到测试环境 → 建立相同表结构 → 使用binlog2sql解析

5.用户权限说明

  • select:需要读取server端information_schema.COLUMNS表,获取表结构的元信息,拼接成可视化的sql语句

  • super/replication client:两个权限都可以,需要执行'SHOW MASTER STATUS',
    获取server端的binlog列表

  • replication slave:通过BINLOG_DUMP协议获取binlog内容的权限

    #精确检查 binlog2sql 所需权限
    SELECT
    User,
    Host,
    (SELECT_priv = 'Y') AS has_select,
    (Super_priv = 'Y') AS has_super,
    (Repl_client_priv = 'Y') AS has_repl_client,
    (Repl_slave_priv = 'Y') AS has_repl_slave
    FROM mysql.user
    WHERE User = 'username' AND Host = 'host';

6. 创建符合 binlog2sql 要求的用户

复制代码
CREATE USER 'binlog2sql_user'@'%' IDENTIFIED BY 'your_password';   
GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO 'binlog2sql_user'@'%';
FLUSH PRIVILEGES;   

三)、选项说明

binlog2sql 是一个用于解析 MySQL 二进制日志(binlog)并生成原始 SQL 语句的工具,常用于误删数据恢复、审计等场景。

下面是 binlog2sql 的常用选项说明(以当前主流版本 danfengcao/binlog2sql 为例):


✅ 基本语法

bash 复制代码
python binlog2sql.py [options]

📌 核心参数说明

🔹 连接数据库相关参数-必要参数

参数 说明
-h, --host MySQL 主机地址,默认为 127.0.0.1
-P, --port MySQL 端口,默认为 3306
-u, --user MySQL 用户名(必须提供)
-p, --password MySQL 密码(必须提供)

示例:

bash 复制代码
-h 192.168.1.10 -P 3306 -u root -p 'your_password'

🔹 指定 binlog 文件范围

参数 说明
--start-file 起始 binlog 文件名(例如:mysql-bin.000001
--end-file 结束 binlog 文件名(可选)
--start-position, --start-pos 起始位置偏移量(默认从文件开头开始)
--end-position, --end-pos 结束位置偏移量(可选)

示例:

bash 复制代码
--start-file='mysql-bin.000001' --start-pos=1234 --end-file='mysql-bin.000002' --end-pos=5678

🔹 时间范围过滤

参数 说明
--start-datetime 开始时间(格式如:'2025-06-30 10:00:00'
--end-datetime 结束时间(格式同上)

示例:

bash 复制代码
--start-datetime='2025-06-30 10:00:00' --end-datetime='2025-06-30 12:00:00'

🔹 数据库和表过滤

参数 说明
-d, --databases 指定数据库名(多个用逗号分隔)
-t, --tables 指定表名(多个用逗号分隔),需配合 -d 使用

示例:

bash 复制代码
-d test_db -t user,order

🔹 输出控制

参数 说明
--only-sql 只输出 SQL 语句,不显示其他信息
--no-primary-key 不在 INSERT 中输出主键字段
--flashback 生成回滚 SQL(用于恢复删除或更新操作)
--stop-never 持续监听最新的 binlog 内容(适用于实时监控)

🧾 示例命令

示例 1:解析出回滚SQL

  • 按时间倒序输出能抵消原始操作的逆向SQL

  • 专门用于数据恢复场景

  • 每条SQL都带有原操作的位置和时间注释

    shell> python binlog2sql.py --flashback -h127.0.0.1 -P3306 -uadmin -p'admin' -dtest -ttest3 --start-file='mysql-bin.000002' --start-position=763 --stop-position=1147

    输出:
    INSERT INTO test.test3(addtime, data, id) VALUES ('2016-12-10 13:03:38', 'english', 4); #start 981 end 1147
    UPDATE test.test3 SET addtime='2016-12-10 13:03:22', data='中文', id=3 WHERE addtime='2016-12-10 12:00:00' AND data='中文' AND id=3 LIMIT 1; #start 763 end 954

示例 2:解析出标准SQL

  • 按时间顺序正向输出binlog中的原始SQL语句

  • 真实记录数据库发生的所有变更(INSERT/UPDATE/DELETE)

  • 包含完整的执行时间、位置等信息注释

    shell> python binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p'admin' -dtest -t test3 test4 --start-file='mysql-bin.000002'

    输出:
    INSERT INTO test.test3(addtime, data, id) VALUES ('2016-12-10 13:03:38', 'english', 4); #start 570 end 736
    UPDATE test.test3 SET addtime='2016-12-10 12:00:00', data='中文', id=3 WHERE addtime='2016-12-10 13:03:22' AND data='中文' AND id=3 LIMIT 1; #start 763 end 954
    DELETE FROM test.test3 WHERE addtime='2016-12-10 13:03:38' AND data='english' AND id=4 LIMIT 1; #start 981 end 1147

标准解析SQL与回滚SQL(Flashback)之间的核心区别。这里有一个稍微整理过的版本,以便更清晰地展示这些信息:

特性 标准解析SQL 回滚SQL(Flashback)
生成参数 无特殊参数 使用--flashback参数
SQL顺序 时间正序 时间倒序
INSERT处理 原样输出INSERT语句 转换为DELETE语句
DELETE处理 原样输出DELETE语句 转换为INSERT语句(带原数据)
UPDATE处理 原样输出UPDATE语句 生成逆向UPDATE(恢复旧值)
主要用途 审计/分析 数据恢复
安全性 直接执行可能导致重复操作风险 专门设计用于安全恢复
执行前检查 必须仔细检查以避免意外后果 仍建议检查,但相对风险较低

⚠️ 注意事项

  1. MySQL 配置要求

    • 必须开启 binlog(binlog_format=ROW
    • 推荐设置 binlog_row_image=FULL
    • 用户需要有 REPLICATION SLAVE 权限
    • > output.sql输出到指定文件
  2. 依赖库

    bash 复制代码
    pip install -r requirements.txt
  3. 支持的事件类型

    • INSERT, UPDATE, DELETE(支持 flashback)

四)、应用案例

1.误删整张表数据,需要紧急回滚

复制代码
test库tbl表原有数据
mysql> select * from tbl;
+----+--------+---------------------+
| id | name   | addtime             |
+----+--------+---------------------+
|  1 | 小赵   | 2016-12-10 00:04:33 |
|  2 | 小钱   | 2016-12-10 00:04:48 |
|  3 | 小孙   | 2016-12-13 20:25:00 |
|  4 | 小李   | 2016-12-12 00:00:00 |
+----+--------+---------------------+
4 rows in set (0.00 sec)

mysql> delete from tbl;
Query OK, 4 rows affected (0.00 sec)

20:28时,tbl表误操作被清空
mysql> select * from tbl;
Empty set (0.00 sec)

2.恢复数据步骤:

1)、登录mysql,查看目前的binlog文件
复制代码
mysql> show master status;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.000051 |       967 |
| mysql-bin.000052 |       965 |
+------------------+-----------+
2)、最新的binlog文件是mysql-bin.000052,我们再定位误操作SQL的binlog位置。误操作人只能知道大致的误操作时间,我们根据大致时间过滤数据。
复制代码
shell> python binlog2sql/binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p'admin' -dtest -ttbl --start-file='mysql-bin.000052' --start-datetime='2016-12-13 20:25:00' --stop-datetime='2016-12-13 20:30:00'
输出:
INSERT INTO `test`.`tbl`(`addtime`, `id`, `name`) VALUES ('2016-12-13 20:26:00', 4, '小李'); #start 317 end 487 time 2016-12-13 20:26:26
UPDATE `test`.`tbl` SET `addtime`='2016-12-12 00:00:00', `id`=4, `name`='小李' WHERE `addtime`='2016-12-13 20:26:00' AND `id`=4 AND `name`='小李' LIMIT 1; #start 514 end 701 time 2016-12-13 20:27:07
DELETE FROM `test`.`tbl` WHERE `addtime`='2016-12-10 00:04:33' AND `id`=1 AND `name`='小赵' LIMIT 1; #start 728 end 938 time 2016-12-13 20:28:05
DELETE FROM `test`.`tbl` WHERE `addtime`='2016-12-10 00:04:48' AND `id`=2 AND `name`='小钱' LIMIT 1; #start 728 end 938 time 2016-12-13 20:28:05
DELETE FROM `test`.`tbl` WHERE `addtime`='2016-12-13 20:25:00' AND `id`=3 AND `name`='小孙' LIMIT 1; #start 728 end 938 time 2016-12-13 20:28:05
DELETE FROM `test`.`tbl` WHERE `addtime`='2016-12-12 00:00:00' AND `id`=4 AND `name`='小李' LIMIT 1; #start 728 end 938 time 2016-12-13 20:28:05
3)、我们得到了误操作sql的准确位置在728-938之间,再根据位置进一步过滤,使用flashback模式生成回滚sql,检查回滚sql是否正确(注:真实环境下,此步经常会进一步筛选出需要的sql。结合grep、编辑器等)
复制代码
shell> python binlog2sql/binlog2sql.py -h127.0.0.1 -P3306 -uadmin -p'admin' -dtest -ttbl --start-file='mysql-bin.000052' --start-position=3346 --stop-position=3556 -B > rollback.sql | cat
输出:
INSERT INTO `test`.`tbl`(`addtime`, `id`, `name`) VALUES ('2016-12-12 00:00:00', 4, '小李'); #start 728 end 938 time 2016-12-13 20:28:05
INSERT INTO `test`.`tbl`(`addtime`, `id`, `name`) VALUES ('2016-12-13 20:25:00', 3, '小孙'); #start 728 end 938 time 2016-12-13 20:28:05
INSERT INTO `test`.`tbl`(`addtime`, `id`, `name`) VALUES ('2016-12-10 00:04:48', 2, '小钱'); #start 728 end 938 time 2016-12-13 20:28:05
INSERT INTO `test`.`tbl`(`addtime`, `id`, `name`) VALUES ('2016-12-10 00:04:33', 1, '小赵'); #start 728 end 938 time 2016-12-13 20:28:05
4)、确认回滚sql正确,执行回滚语句。登录mysql确认,数据回滚成功。
复制代码
shell> mysql -h127.0.0.1 -P3306 -uadmin -p'admin' < rollback.sql

mysql> select * from tbl;
+----+--------+---------------------+
| id | name   | addtime             |
+----+--------+---------------------+
|  1 | 小赵   | 2016-12-10 00:04:33 |
|  2 | 小钱   | 2016-12-10 00:04:48 |
|  3 | 小孙   | 2016-12-13 20:25:00 |
|  4 | 小李   | 2016-12-12 00:00:00 |
+----+--------+---------------------+

二、my2sql工具

一)、叙述

1.描述

go版MySQL binlog解析工具,通过解析MySQL binlog ,可以生成原始SQL、回滚SQL、去除主键的INSERT SQL等,也可以生成DML统计信息。类似工具有binlog2sql、MyFlash、my2fback等,本工具基于my2fback、binlog_rollback工具二次开发而来。

2.用途

  • 数据快速回滚(闪回)

  • 主从切换后新master丢数据的修复

  • 从binlog生成标准SQL,带来的衍生功能

  • 生成DML统计信息,可以找到哪些表更新的比较频繁

  • IO高TPS高, 查出哪些表在频繁更新

  • 找出某个时间点数据库是否有大事务或者长事务

  • 主从延迟,分析主库执行的SQL语句

  • 除了支持常规数据类型,对大部分工具不支持的数据类型做了支持,比如json、blob、text、emoji等数据类型sql生成

3.产品性能对比

binlog2sql当前是业界使用最广泛的MySQL回滚工具,下面对my2sql和binlog2sql做个性能对比。

功能 使用my2sql 使用binlog2sql
生成回滚SQL 1分40秒 65分钟
生成原始SQL 1分30秒 50分钟
表DML及事务统计信息 40秒 不支持

4.限制

  • 使用回滚/闪回功能时,binlog格式必须为row,且binlog_row_image=full, DML统计以及大事务分析不受影响
  • 只能回滚DML, 不能回滚DDL
  • 使用rollback功能时,要解析的binlog段,表结构要保持一致(例如:解析mysql-bin.000001文件,此binlog文件的的表有add column或drop column操作,则执行rollback可能会执行异常)
  • 支持指定-tl时区来解释binlog中time/datetime字段的内容。开始时间-start-datetime与结束时间-stop-datetime也会使用此指定的时区, 但注意此开始与结束时间针对的是binlog event header中保存的unix timestamp。结果中的额外的datetime时间信息都是binlog event header中的unix timestamp
  • 此工具是伪装成从库拉取binlog,需要连接数据库的用户有SELECT, REPLICATION SLAVE, REPLICATION CLIENT权限
  • MySQL8.0版本需要在配置文件中加入default_authentication_plugin =mysql_native_password,用户密码认证必须是mysql_native_password才能解析

5.go安装

复制代码
# 下载最新版 Go (请替换为最新版本号)
wget https://golang.org/dl/go1.21.1.linux-amd64.tar.gz

# 解压到 /usr/local
sudo tar -C /usr/local -xzf go1.21.1.linux-amd64.tar.gz

# 设置环境变量
echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bashrc
source ~/.bashrc


二)、安装

复制代码
cd $GOPATH/src
git clone https://github.com/liuhr/my2sql.git
cd my2sql/
go build .
./my2sql version

博客下载地址

三)、选项说明

以下是你提供的参数说明整理成表格形式,便于查阅和理解:

参数名 说明 默认值
-U 优先使用unique key作为where条件 false
-mode 模式选择:repl(伪装从库解析) 或 file(离线解析) repl
-local-binlog-file 当模式为file时,指定binlog文件路径(可多个连续)
-add-extraInfo 是否将额外信息(如db、table、时间、位置等)以注释形式加入SQL前 false
-big-trx-row-limit n 被认为是大事务的最小行数(即包含多少条SQL) 500
-databases 指定要解析的数据库列表,逗号分隔 所有库
-tables 指定要解析的表列表,逗号分隔 所有表
-sql 指定解析的SQL类型:insertupdatedelete 全部解析
-doNotAddPrifixDb 生成的SQL是否不带数据库名前缀 false
-file-per-table 为每个表生成一个独立的SQL文件 false
-full-columns 对于UPDATE/DELETE语句,是否使用全列构建WHERE或SET部分 false
-ignorePrimaryKeyForInsert 生成的INSERT语句是否忽略主键 false
-output-dir 指定输出结果的目录 当前目录
-output-toScreen 将结果打印到屏幕而不是写入文件 false
-threads 并发处理线程数 8
-work-type 工作类型:2sql(生成原始SQL)、rollback(生成回滚SQL)、stats(仅统计DML/事务)

四)、应用案例

1.解析出标准SQL

1)、根据时间点解析出标准SQL

复制代码
#伪装成从库解析binlog
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306 -mode repl -work-type 2sql  -start-file mysql-bin.011259  -start-datetime "2020-07-16 10:20:00" -stop-datetime "2020-07-16 11:00:00" -output-dir ./tmpdir
#直接读取binlog文件解析
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306 -mode file -local-binlog-file ./mysql-bin.011259  -work-type 2sql  -start-file mysql-bin.011259  -start-datetime "2020-07-16 10:20:00" -stop-datetime "2020-07-16 11:00:00" -output-dir ./tmpdir

2)、根据pos点解析出标准SQL

复制代码
#伪装成从库解析binlog
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306 -mode repl  -work-type 2sql  -start-file mysql-bin.011259  -start-pos 4 -stop-file mysql-bin.011259 -stop-pos 583918266  -output-dir ./tmpdir
#直接读取binlog文件解析
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306  -mode file -local-binlog-file ./mysql-bin.011259  -work-type 2sql  -start-file mysql-bin.011259  -start-pos 4 -stop-file mysql-bin.011259 -stop-pos 583918266  -output-dir ./tmpdir

2.解析出回滚SQL

1)、根据时间点解析出回滚SQL

复制代码
#伪装成从库解析binlog
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306 -mode repl -work-type rollback  -start-file mysql-bin.011259  -start-datetime "2020-07-16 10:20:00" -stop-datetime "2020-07-16 11:00:00" -output-dir ./tmpdir
#直接读取binlog文件解析
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306  -mode file -local-binlog-file ./mysql-bin.011259 -work-type rollback  -start-file mysql-bin.011259  -start-datetime "2020-07-16 10:20:00" -stop-datetime "2020-07-16 11:00:00" -output-dir ./tmpdir

2)、根据pos点解析出回滚SQL

复制代码
#伪装成从库解析binlog
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306 -mode repl -work-type rollback  -start-file mysql-bin.011259  -start-pos 4 -stop-file mysql-bin.011259 -stop-pos 583918266  -output-dir ./tmpdir
#直接读取binlog文件解析
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306   -mode file -local-binlog-file ./mysql-bin.011259  -work-type rollback  -start-file mysql-bin.011259  -start-pos 4 -stop-file mysql-bin.011259 -stop-pos 583918266  -output-dir ./tmpdir

3.统计DML以及大事务

1)、统计时间范围各个表的DML操作数量,统计一个事务大于500条、时间大于300秒的事务

复制代码
#伪装成从库解析binlog
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306  -mode repl -work-type stats  -start-file mysql-bin.011259  -start-datetime "2020-07-16 10:20:00" -stop-datetime "2020-07-16 11:00:00"  -big-trx-row-limit 500 -long-trx-seconds 300   -output-dir ./tmpdir
#直接读取binlog文件解析
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306 -mode file -local-binlog-file ./mysql-bin.011259   -work-type stats  -start-file mysql-bin.011259  -start-datetime "2020-07-16 10:20:00" -stop-datetime "2020-07-16 11:00:00"  -big-trx-row-limit 500 -long-trx-seconds 300   -output-dir ./tmpdir

2)、统计一段pos点范围各个表的DML操作数量,统计一个事务大于500条、时间大于300秒的事务

复制代码
#伪装成从库解析binlog
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306  -mode repl -work-type stats  -start-file mysql-bin.011259  -start-pos 4 -stop-file mysql-bin.011259 -stop-pos 583918266  -big-trx-row-limit 500 -long-trx-seconds 300   -output-dir ./tmpdir
#直接读取binlog文件解析
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306 -mode file -local-binlog-file ./mysql-bin.011259  -work-type stats  -start-file mysql-bin.011259  -start-pos 4 -stop-file mysql-bin.011259 -stop-pos 583918266  -big-trx-row-limit 500 -long-trx-seconds 300   -output-dir ./tmpdir

3)、从某一个pos点解析出标准SQL,并且持续打印到屏幕

复制代码
#伪装成从库解析binlog
./my2sql  -user root -password xxxx -host 127.0.0.1   -port 3306 -mode repl  -work-type 2sql  -start-file mysql-bin.011259  -start-pos 4   -output-toScreen 

五)、应用案例

要使用my2sql解析本地的binlog文件,你需要按照以下步骤操作。假设你已经安装好了my2sql工具,并且你的binlog文件位于本地机器上。

基本命令格式

bash 复制代码
./my2sql  -user root -password "sz#jKP0mDWdsZ" -host 127.0.0.1   -port 3306  -work-type=2sql -mode=file     -start-file=/data/sort/mysql-bin.000782  -local-binlog-file=/data/sort/mysql-bin.000782
  • -work-type=2sql:表示生成原始SQL语句。
  • -mode=file:表示以离线模式解析binlog文件。
  • -local-binlog-file:指定要解析的binlog文件路径。

示例

假设你的binlog文件名为mysql-bin.011519,并且存储在/var/lib/mysql/目录下,那么你可以运行如下命令:

bash 复制代码
my2sql -work-type=2sql -mode=file -local-binlog-file=/var/lib/mysql/mysql-bin.011519

高级选项

根据需求,你可能还需要添加一些额外的参数来定制解析行为,例如:

  • 只解析特定数据库或表

    ./my2sql -user root -password "sz#jKP0mDWdsZ" -host 127.0.0.1 -port 3306 -work-type=2sql -mode=file -start-file=/data/sort/mysql-bin.000782 -local-binlog-file=/data/sort/mysql-bin.000782 -tables=rechecke_zg

  • 将输出结果保存到指定目录

    bash 复制代码
    my2sql -work-type=2sql -mode=file -local-binlog-file=/var/lib/mysql/mysql-bin.011519 -output-dir=/path/to/output/dir
  • 为每个表生成一个独立的SQL文件

    bash 复制代码
    my2sql -work-type=2sql -mode=file -local-binlog-file=/var/lib/mysql/mysql-bin.011519 -file-per-table=true
  • 将生成的结果打印到屏幕而不是写入文件

    bash 复制代码
    my2sql -work-type=2sql -mode=file -local-binlog-file=/var/lib/mysql/mysql-bin.011519 -output-toScreen=true
相关推荐
叁沐4 分钟前
MySQL 05 深入浅出索引(下)
mysql
陈卓41036 分钟前
MySQL-主从复制&分库分表
android·mysql·adb
你都会上树?1 小时前
MySQL MVCC 详解
数据库·mysql
长征coder2 小时前
AWS MySQL 读写分离配置指南
mysql·云计算·aws
ladymorgana3 小时前
【docker】修改 MySQL 密码后 Navicat 仍能用原密码连接
mysql·adb·docker
PanZonghui3 小时前
Centos项目部署之安装数据库MySQL8
linux·后端·mysql
GreatSQL社区3 小时前
用systemd管理GreatSQL服务详解
数据库·mysql·greatsql
掘根3 小时前
【MySQL进阶】错误日志,二进制日志,mysql系统库
数据库·mysql
weixin_438335403 小时前
基础知识:mysql-connector-j依赖
数据库·mysql
小明铭同学3 小时前
MySQL 八股文【持续更新ing】
数据库·mysql