laravel mysql 事务_laravel mysql事务不生效_MySQL 实战第46讲,我给丁奇大神序章,grant 不生效问题...

点击上方“业余草”,选择“置顶公众号”

第一时间获取技术干货和业界资讯!

fd0b213821396f7165189cc161d768cd.png

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

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

1092624dc408a83af06123e36ef09e05.png

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

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

c3c6591f91f6edad6c0165be1d85ea48.png

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

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

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

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

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

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

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

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

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

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

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

8f8210379c3d5b2ee73edc2db99de183.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值