Mysql数据库系统库数据恢复

概述:

Mysql数据库自带系统数据库故障,恢复后业务数据不变

1 备份除系统库外其他库

bash 复制代码
# 1. 先获取所有数据库列表(排除 mysql、information_schema、performance_schema、sys)
mysql -u root -p -NBe "SHOW DATABASES WHERE \`Database\` NOT IN ('mysql', 'information_schema', 'performance_schema', 'sys')" > databases.txt
 
# 2. 用获取的数据库列表进行备份(排除系统库)
mysqldump -u root -p --databases $(cat databases.txt) > all_business_data.sql


-- 步骤说明:

第一条命令会生成一个仅包含业务数据库名称的文件 databases.txt(自动排除系统库)。

第二条命令通过 --databases 参数指定备份 databases.txt 中的所有业务库,实现 "排除 mysql 系统库" 的效果。

2 停止 MySQL 服务并备份当前数据目录

bash 复制代码
# 1. 停止MySQL服务
sudo systemctl stop mysqld

# 2. 备份当前数据目录(防止误操作,可选但推荐)
sudo mv /var/lib/mysql /var/lib/mysql_old_backup

3 创建新的空数据目录并初始化

  • 创建新的空数据目录
bash 复制代码
# 1. 创建新的数据目录
sudo mkdir /var/lib/mysql

# 2. 设置目录权限(必须为mysql用户)
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 755 /var/lib/mysql
  • 初始化数据库
bash 复制代码
# 3. 初始化MySQL(生成全新的系统库,包括help_topic等表)
sudo mysqld --initialize --datadir=/var/lib/mysql --user=mysql
  • 获取初始化生成的临时 root 密码
bash 复制代码
sudo grep 'temporary password' /var/log/mysqld.log

4 启动 MySQL 并重置 root 密码

bash 复制代码
# 1. 启动MySQL服务
sudo systemctl start mysqld

# 2. 用临时密码登录
mysql -u root -p
# 输入步骤2中记录的临时密码

# 3. 修改root密码(替换为你的新密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
FLUSH PRIVILEGES;

# 4. 退出MySQL
exit

5 恢复业务数据

bash 复制代码
# 恢复备份(输入新设置的root密码)
mysql -u root -p < all_business_data.sql

6 验证修复结果

bash 复制代码
# 1. 登录MySQL
mysql -u root -p

# 2. 检查系统表help_topic是否存在
USE mysql;
DESCRIBE help_topic;  # 正常显示表结构即修复成功

# 3. 检查业务数据是否恢复
USE 你的业务库名;
SHOW TABLES;  # 确认业务表已恢复
SELECT * FROM 你的业务表 LIMIT 1;  # 验证数据完整性

7 root用户开启远程连接

bash 复制代码
# 本地登录 MySQL(使用 root 账号)
mysql -u root -p
# 输入 root 密码后进入 MySQL 命令行

# 切换到 mysql 系统库(存储用户权限信息)
USE mysql;

-- 查询当前 root 用户的主机限制(默认是 localhost)
SELECT user, host FROM user WHERE user = 'root';

-- 修改 root 用户允许从所有 IP 连接
UPDATE user SET host = '%' WHERE user = 'root' AND host = 'localhost';

-- 刷新权限使修改生效
FLUSH PRIVILEGES;

相关推荐
IT大白鼠1 分钟前
渗透测试实战从靶场搭建到渗透流程——第 8 篇 · 服务型靶标(上):MySQL 双版本写文件链
数据库·mysql·渗透测试
piaoyiren25 分钟前
Python FTP 服务端项目详细功能文档
网络·数据库·python
少年的范儿28 分钟前
Windows 安装 MySQL 8.4 教程(ZIP 解压版):配置 my.ini、初始化数据库与启动服务
数据库·windows·mysql
l1t37 分钟前
DeepSeek总结的AI 智能体应该用哪种语言搜索其记忆:SQL 还是 SPARQL?
数据库·人工智能·sql
麦壳饼1 小时前
SonnetDB:PID 调参实战:阶跃响应分析与参数解读
数据库·sonnetdb
神仙别闹1 小时前
基于Python+MySQL实现(Web)个人博客系统
python·mysql·php
猿究院--Cu-Sn合金1 小时前
Spring Boot + DeepSeek 求职 Agent 实践:工具注册、多轮调用与简历 JD 对比
数据库·人工智能·spring boot·后端·deepseek
IvorySQL1 小时前
PostgreSQL 日报|Anonymizer 3.3 修复高危漏洞(10 月 29 日)
数据库·postgresql
geovindu2 小时前
SQL Data Sampling and Approximation Techniques using postgreSQL 18
大数据·数据库·数据仓库·sql·postgresql·数据库开发·数据库架构
zyseo82 小时前
谷歌SEO 关键词研究完整方法论:从种子词到优先级矩阵
数据库·人工智能·矩阵