MySQL执行GRANT后权限未即时生效,如何手动刷新权限使变更立即体现?

2026-05-06 19:450阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计852个文字,预计阅读时间需要4分钟。

MySQL执行GRANT后权限未即时生效,如何手动刷新权限使变更立即体现?

在MySQL 5.7及更高版本中,使用标准`GRANT`或`REVOKE`语句授权权限时,MySQL会自动重新加载权限缓存——即新连接立即生效。要强制立即生效,使用`FLUSH PRIVILEGES;`命令,这不是保守操作,而是紧急操作:

常见误操作:

  • 执行 GRANT SELECT ON mydb.* TO 'u'@'localhost'; 后紧跟 FLUSH PRIVILEGES; → 语法合法,但纯属冗余
  • 误以为“不刷就不生效”,结果忽略了真实问题(比如没重连、连错实例、主机名拼错)
  • 在主从架构里只在从库执行 GRANT → 权限写不进主库 binlog,从库刷新也无效

为什么刚 GRANT 完还是 Access denied?关键在连接生命周期

MySQL 的权限检查只发生在连接建立那一刻。已存在的连接不会动态感知权限变更——哪怕你刚给它加了 ALL PRIVILEGES,当前会话仍按旧权限运行。

阅读全文
标签:Mysql

本文共计852个文字,预计阅读时间需要4分钟。

MySQL执行GRANT后权限未即时生效,如何手动刷新权限使变更立即体现?

在MySQL 5.7及更高版本中,使用标准`GRANT`或`REVOKE`语句授权权限时,MySQL会自动重新加载权限缓存——即新连接立即生效。要强制立即生效,使用`FLUSH PRIVILEGES;`命令,这不是保守操作,而是紧急操作:

常见误操作:

  • 执行 GRANT SELECT ON mydb.* TO 'u'@'localhost'; 后紧跟 FLUSH PRIVILEGES; → 语法合法,但纯属冗余
  • 误以为“不刷就不生效”,结果忽略了真实问题(比如没重连、连错实例、主机名拼错)
  • 在主从架构里只在从库执行 GRANT → 权限写不进主库 binlog,从库刷新也无效

为什么刚 GRANT 完还是 Access denied?关键在连接生命周期

MySQL 的权限检查只发生在连接建立那一刻。已存在的连接不会动态感知权限变更——哪怕你刚给它加了 ALL PRIVILEGES,当前会话仍按旧权限运行。

阅读全文
标签:Mysql