最近遇到一个奇怪的事, MySQL 安装好相关业务账号建立之后,想限制 root 为本地登录。 话说类似操作基本每个月都会操作好几次,平时都是正常的,环境版本与此次的基本统一。无论是使用命令RENAME USER 'root'@'%' TO 'root'@'localhost';
还是 navicat 修改 root 账号的 host 值,都会报错:ERROR 1396 (HY000): Operation RENAME USER failed for 'root'@'localhost'
将此处的 localhost 换成 127.0.0.1 重新操作一遍,两种方法均正常修改,无报错。 直接修改 mysql.user 表却是可以的:UPDATE mysql.user SET host = 'localhost' WHERE user = 'root';
flush privileges;
数据库版本 MySQL5.7,OS:ubuntu16.04,本地 host 已设置 127.0.0.1 localhost目前找了一圈,官方文档上面也没有对应的介绍,其他的也都是介绍通过改表实现,但是并没有说明原因。 不知道大家有木有遇到过类似的错误,可能的原因是神马,虽说改 user 表可以达到我要的效果, 但是还想弄清楚一下原因。

解决方案 »

  1.   

    应该是自己不能rename自己
      

  2.   


    我修改的时候确实是使用root用户本身,但是将host改为127.0.0.1就是可以的。
    同时我试了一下用root去修改其他用户的host,无论是修改成localhost还是127.0.0.1,都是可以的。
    用其他有权限的用户来修改root的host,同样是修改成localhost的时候报错,修改成127.0.0.1都是好的。目前出现问题的情况简单来说就是: 不管用什么账号去将root的host修改成localhost都会报错的,但是修改非root账号的host为localhost则一切正常。