前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 实战第46讲,我给丁奇大神序章,grant 不生效问题

MySQL 实战第46讲,我给丁奇大神序章,grant 不生效问题

作者头像
业余草
发布2019-07-03 11:42:47
1.1K0
发布2019-07-03 11:42:47
举报
文章被收录于专栏:业余草业余草
640?wx_fmt=png
640?wx_fmt=png

《MySQL 实战45讲》这个专栏写的非常好,但是我们的学习热情,远远的超过了 45 讲的范畴!

最近大家的学习热情都很高,其中群里有一位网友遇到了一个问题。数据库设置了“grant all privileges on . to ‘root’@’%’ identified by ‘password’ with grant option;”为什么远程登录还是看不到库?

640
640

有图有真相,这波骚操作似曾相似。按理说,执行了 grant 命令之后,没有必要跟着执行 flush privileges 命令了。因为,grant 语句都是即时生效的。

即执行 grant 之后,db 和内存都会更新,并且它们是同步的。但现实情况是,我们执行了下面的语句后,我们再远程登录,还是看不到库。

640?wx_fmt=png
640?wx_fmt=png

这其实是一起精进的同学忘记了一个重要的知识点。那就是:

grant 命令对于全局权限,同时更新了磁盘和内存。命令完成后即时生效,接下来新创建的连接会使用新的权限。 对于一个已经存在的连接,它的全局权限不受 grant 命令的影响。

看到,这句我立马问他。是不是旧的连接没权限,新的连接是可以的。

果然,他回复我,是的。但是针对已经存在的连接怎么办呢?

他又想出了一招,重启 MySQL 服务。

这招够狠。重启在程序员届的杀招被他接上了。但是,重启失灵了,重启后,已有的连接还是没权限。具体的表现是,备库上的复制连接还是未权限。

这说明了一个问题,重启 MySQL,内存中的权限并没有刷新。

那怎么办呢?一种方法是,kill 掉已存在的连接。另一种是,主动断开连接,再次重新连接。比如,备库上先把 slave 停止了,重新建立连接。

重新建立连接的时候,会再次的进行权限验证。这样新改变的权限就可以生效了。

有些人可能很诧异,为什么重启了 MySQL 服务,还是不行呢?这是因为,重启 MySQL 服务,根本就没有同步内存和磁盘上权限的逻辑。但是重启 MySQL 服务,MySQL 的配置文件是被重新加载了,这一点是可以肯定的。

我这个第 46 章,并不完美。查阅了很多资料,也没有看到重启 MySQL 服务,到底干了哪些事?这一章,希望丁奇大神能加餐!给我们讲讲 MySQL 重启的那些事!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年06月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档