方案 A:mysqldump 逻辑备份还原
重点:保持前后数据库密码一样,保持数据库服务开启
1. 原服务器完整备份 默认在 /root 目录生成 a.sql 完整备份文件
# 带密码命令
mysqldump -ugame -p'uu5!^%jg' --all-databases --triggers --routines --events > a.sql以下命令可选,相关说明在最下面
# 常规命令
mysqldump -ugame -p --all-databases --triggers --routines --events > a.sql
# 找不到命令使用lampp完整路径
/opt/lampp/bin/mysqldump -ugame -p --all-databases --triggers --routines --events > a.sql2. 备份文件迁移
将生成的 a.sql 下载至本地,再上传至新服务器/root目录
3. 新服务器数据还原
# 带密码命令
mysql -ugame -p'uu5!^%jg' < a.sql以下命令可选
# 常规命令
mysql -ugame -p < a.sql
# 找不到命令使用lampp完整路径
/opt/lampp/bin/mysql -ugame -p < a.sql方案 B:停止数据库服务,物理目录还原 /var/lib/mysql
⚠️ 专属约束:仅支持 MySQL5.7.4 → MySQL5.7.4 同版本迁移,禁止跨版本使用
⚠️ 服务名固定:MySQL5.7.4 服务名为 mysqld.service,非 mysql、非 mariadb
⚠️ 核心规则:物理目录还原会完整迁移源库所有数据、账号、密码、权限,直接覆盖目标库配置
⚠️:注意未测试,是否可用
1. 兼容关闭 mariadb 服务(规避端口冲突)
systemctl stop mariadb2. 核查本机数据库服务名称
systemctl list-unit-files | grep -E 'mysql|mariadb'3. 查杀残留 mysqld 进程(防止锁文件)
ps -ef | grep mysqld4. 停止 MySQL5.7.4 数据库服务
systemctl stop mysqld
# 校验服务状态,确保完全关闭
systemctl status mysqld输出 inactive (dead) 即为完全关闭,可操作 /var/lib/mysql 目录替换文件
5. 物理文件还原必做操作(高频踩坑点)
替换完 /var/lib/mysql 目录后,必须修复文件权限,否则数据库启动失败
chown -R mysql:mysql /var/lib/mysql
chmod 700 /var/lib/mysql6. 启动数据库服务
systemctl start mysqld7. 按需修改数据库密码
物理还原后密码同步源库 uu5!^%jg,如需重置可登录数据库执行语句
# 登录数据库
mysql -ugame -p输入当前密码后,执行密码修改语句(5.7.4 双语法兼容,任选其一)
# 写法1(原生兼容)
SET PASSWORD FOR 'game'@'%' = PASSWORD('uu5!^%jg');
FLUSH PRIVILEGES;
# 写法2(标准推荐)
ALTER USER 'game'@'%' IDENTIFIED BY 'uu5!^%jg';
FLUSH PRIVILEGES;相关说明
备份相关命令说明:
--all-databases :导出 mysql 系统库
--triggers:导出触发器
--routines:导出存储过程、自定义函数
--events:导出数据库定时事件
XAMPP 集成环境务必使用 /opt/lampp/bin/ 前缀调用 mysql 相关命令。
查看所有数据库目录
mysql -ugame -p'uu5!^%jg'
SHOW DATABASES;数据库 root账户是否存在查询
mysql -ugame -p
SELECT user,host FROM mysql.user WHERE user='root';
输出empty,标识无root
数据库查询所有账户,按字母排序
SELECT user,host FROM mysql.user ORDER BY user,host;