MySQL下grant不生效问题怎么解决

这篇文章主要讲解了“MySQL下grant不生效问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL下grant不生效问题怎么解决”吧!

为芗城等地区用户提供了全套网页设计制作服务,及芗城网站建设行业解决方案。主营业务为成都做网站、成都网站制作、芗城网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

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

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

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

MySQL下grant不生效问题怎么解决

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

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

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

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

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

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

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

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

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

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

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

感谢各位的阅读,以上就是“MySQL下grant不生效问题怎么解决”的内容了,经过本文的学习后,相信大家对MySQL下grant不生效问题怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


网站标题:MySQL下grant不生效问题怎么解决
分享URL:http://hbruida.cn/article/gpcjoj.html