讲师中心 微信公众号
AI工具推荐 视频效率加速

mysql误操作修改权限表如何回滚_MySQL权限备份与恢复方案

大磊姑娘_5650

大磊姑娘_5650

发布时间:2026-03-20 09:44:03

|

462人浏览过

|

来源于php中文网

原创

能登录的前提是至少还有一个账号保留SUPER或SYSTEM_ADMIN权限且认证方式未被破坏;否则需用--skip-grant-tables启动修复,优先执行FLUSH PRIVILEGES确认状态。

mysql误操作修改权限表如何回滚_mysql权限备份与恢复方案

误改 mysql.user 表后还能登录吗?

能登录的前提是:至少还有一个账号保留 SUPER 或 SYSTEM_ADMIN 权限,且认证方式未被破坏(比如没把 plugin 改成 auth_socket 但没装对应插件)。如果连 root 都被设成 plugin='caching_sha2_password' 且密码字段清空,或者 host 被改成 '%' 以外又没开本地 socket 认证,就进不去了。

常见错误现象:Access denied for user 'root'@'localhost'、Client does not support authentication protocol requested by server、连接直接被拒绝无提示。

  • 别急着重启 MySQL——重启会加载损坏的权限表,让问题固化
  • 优先用 --skip-grant-tables 启动实例(需有服务器 root 权限),跳过权限校验后直连修复
  • 启动后第一件事不是改表,而是执行 FLUSH PRIVILEGES 确认当前内存权限状态,避免误判

如何从备份恢复 mysql 系统库

系统库不能用 mysqldump 常规导出——默认会跳过 mysql 库,且 user 表含哈希密码字段,直接 INSERT 可能因加密方式不一致导致密码失效。

正确做法是冷备 + mysql_upgrade 衔接:

  • 停库后拷贝整个 mysql/ 子目录(路径如 /var/lib/mysql/mysql/),不是只拷 user.ibd
  • 恢复时必须保证 MySQL 版本与备份时一致或更高;低版本备份不能直接用于高版本实例
  • 替换文件后不能直接启动,要运行 mysqld --upgrade=FORCE 或 mysql_upgrade -u root -p 重建系统视图和权限缓存

注意:mysql_upgrade 在 8.0.16+ 已弃用,改由 mysqld 启动时自动执行,但旧备份恢复仍需人工触发兼容性检查。

GRANT 语句改权限比直接 UPDATE mysql.user 安全在哪?

直接写 UPDATE mysql.user SET authentication_string=... 绕过了 MySQL 的权限校验逻辑,容易留下不一致状态:比如 max_questions 字段被设为负数、account_locked 写成字符串 'Y' 而非布尔值,MySQL 不报错但后续 FLUSH PRIVILEGES 可能失败。

MySQL
MySQL

编写正确的MySQL查询,避免字符集、索引和锁方面的常见陷阱。

下载

GRANT 是唯一受控入口:

  • 自动处理密码哈希(根据 default_authentication_plugin 配置选择 caching_sha2_password 或 mysql_native_password)
  • 校验 host 格式合法性(不允许 '192.168.*' 这种模糊写法出现在 GRANT 中)
  • 更新 mysql.tables_priv 等关联表时保持事务一致性,不会出现“用户有权限但表级权限丢失”

示例:想重置 root 密码,用 ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'newpass';,别碰 authentication_string 字段。

日常该备份哪些权限相关对象?

只备份 mysql.user 表远远不够。权限分散在多个表里,缺一不可:

  • mysql.user:全局权限 + 认证信息
  • mysql.db:数据库级权限(CREATE, DROP 等)
  • mysql.tables_priv 和 mysql.columns_priv:细粒度控制,常被忽略但线上真有用
  • mysql.procs_priv:存储过程权限,微服务架构下 DBA 可能授权给应用账号调用特定 SP

备份命令建议用:mysqldump --single-transaction --routines --triggers --no-create-info mysql user db tables_priv columns_priv procs_priv > perms_backup.sql。别加 --all-databases,它会漏掉系统库元数据。

真正难的不是备份,是验证——定期用测试实例导入并尝试用各账号连接、执行 SHOW GRANTS,确认权限映射没因版本升级偏移。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2353

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1419

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

835

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3292

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

5608

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1219

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5871

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

5102

2023.08.14

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

60

2026.10.22

热门下载

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

精品课程

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

共1课时 | 190人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn