0

0

mysql如何备份权限系统数据_mysql系统库备份与恢复

P粉602998670

P粉602998670

发布时间:2026-03-12 08:28:32

|

915人浏览过

|

来源于php中文网

原创

直接用 mysqldump 备份 mysql 系统库易失败,因权限不足或表结构版本不匹配(如 5.7 客户端连 8.0 实例时 role_edges 表不可见);应使用同版本客户端、高权限账户,仅导出 user、db、tables_priv 等核心权限表,并加 --skip-triggers --skip-routines --no-create-info 参数。

mysql如何备份权限系统数据_mysql系统库备份与恢复

mysqldump 备份 mysql 系统库会失败?

直接用 mysqldump 备份 mysql 库,常遇到 Access denied for user 'xxx'@'localhost' (using password: YES)Table 'mysql.role_edges' doesn't exist 这类报错。不是权限不够,就是表结构版本不匹配——5.7 和 8.0 的 mysql 库表差异很大,mysqldump 默认会尝试读取所有表,而像 role_edgespassword_history 这些 8.0+ 新增表,在旧版本客户端或低权限账户下根本不可见。

实操建议:

  • 必须用 root 或拥有 SELECT 权限且能访问 mysql 库所有表的账户执行备份
  • 避免用低版本 mysqldump(比如 MySQL 5.7 的 dump 工具)去连 MySQL 8.0 实例;优先用服务端同版本的客户端
  • --skip-lock-tables,否则 mysqldumpmysql 库加锁时可能卡住系统权限变更
  • 不推荐全量导出:mysqldump --databases mysql —— 它会包含 userdbtables_priv 等核心表,但也混入 help_topictime_zone 这类无关数据,恢复时易出错

只备份真正影响权限的那几张表

权限生效只依赖少数几张表:用户账号、全局权限、数据库级权限、表级权限、列级权限、存储过程权限,以及 8.0+ 的角色相关表。其他如 columns_privprocs_priv 如果你没显式设过列或过程权限,实际为空,可跳过。

实操建议:

  • 明确要备份的表清单(MySQL 8.0):userdbtables_privcolumns_privprocs_privproxies_privroles_mappingrole_edges
  • mysqldump mysql user db tables_priv ... 指定表名,不带 --databases,避免自动加 CREATE DATABASE 语句干扰恢复
  • 加上 --skip-triggers --skip-routines --no-create-info:权限表不含触发器和存储过程,--no-create-info 能省掉 CREATE TABLE 语句,防止恢复时因表结构不一致报错
  • 如果只做账号快照,甚至可以只 dump userdbmysqldump mysql user db > priv_backup.sql

恢复权限表前必须停写 + 清空目标表

直接 mysql mysql 很危险:dump 文件里是 <code>INSERT INTO user VALUES ...,但 MySQL 8.0 的 user 表有自增主键和默认值约束,重复插入会导致主键冲突或字段被覆盖成 NULL,最终登录失败。

I-Shop购物系统
I-Shop购物系统

部分功能简介:商品收藏夹功能热门商品最新商品分级价格功能自选风格打印结算页面内部短信箱商品评论增加上一商品,下一商品功能增强商家提示功能友情链接用户在线统计用户来访统计用户来访信息用户积分功能广告设置用户组分类邮件系统后台实现更新用户数据系统图片设置模板管理CSS风格管理申诉内容过滤功能用户注册过滤特征字符IP库管理及来访限制及管理压缩,恢复,备份数据库功能上传文件管理商品类别管理商品添加/修改/

下载

实操建议:

  • 恢复前先停业务,确保无连接在修改权限(尤其避免其他 DBA 同时执行 GRANT
  • 不能用 DROP TABLETRUNCATE 清空系统表——MySQL 不允许对 mysql 库表执行这些操作
  • 正确做法是用 DELETE FROM userDELETE FROM db 等逐表清空,再 source dump 文件
  • 恢复后必须执行 FLUSH PRIVILEGES,否则内存缓存不会更新,新权限不生效
  • 如果是跨版本恢复(比如从 8.0 dump 恢复到 5.7),绝对不可行——表结构不兼容,role_edges 在 5.7 根本不存在

用 SELECT INTO OUTFILE 备份更轻量、更可控

当只需要快速抓取当前账号和权限状态(比如故障前快照),SELECT INTO OUTFILEmysqldump 更干净:它不生成 SQL 语句,只导出纯数据,也绕开了表结构校验和锁机制。

实操建议:

  • 确保 secure_file_priv 允许写入路径,比如设为 /var/lib/mysql-files/
  • 导出用户和权限数据:SELECT * FROM mysql.user INTO OUTFILE '/var/lib/mysql-files/user.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
  • 导出时加 WHERE account_locked = 'N'WHERE plugin != 'auth_socket' 可过滤掉本地 socket 登录账户,避免恢复时误覆盖
  • 这种 CSV 文件不能直接恢复进表,但可配合 LOAD DATA INFILE 或脚本转成 INSERT,适合做审计比对或人工核查

权限系统备份最麻烦的从来不是命令怎么写,而是搞不清哪几张表真正在起作用、哪个版本对应哪些表、以及恢复时要不要清空——这三个点漏掉任何一个,备份就等于白做。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

1133

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

381

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2152

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

380

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

1683

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

585

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

440

2024.04.29

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 846人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号