MySQL5.7 修改 root 用户 host 报错:Operation RENAME USER failed for 'root'@'localhost'

2017-01-10 11:18:48 +08:00
 MaxFang

最近遇到一个奇怪的事, 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 表可以达到我要的效果, 但是还想弄清楚一下原因。

7584 次点击
所在节点    MySQL
8 条回复
xia0pia0
2017-01-10 14:13:06 +08:00
MaxFang
2017-01-10 18:24:24 +08:00
@xia0pia0
谢谢。
一个走 socket ,一个走 tcp/ip ,这个我了解的。但是报错不应该出现在修改 host 的时候吧。
mingyun
2017-01-10 23:17:28 +08:00
show grants;
MaxFang
2017-01-11 09:45:27 +08:00
@mingyun
SHOW GRANTS 这个也没看出异常哇。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION
mingl0280
2017-01-13 02:52:05 +08:00
有那么麻烦么……
mingl0280
2017-01-13 02:54:09 +08:00
UPDATE Mysql.User SET HOST='127.0.0.1' WHERE User='root' AND Host NOT IN('::1','127.0.0.1','localhost');
Flush Privileges;
mingl0280
2017-01-13 02:57:47 +08:00
检查下你有没有设置 /etc/hosts 里的::1 localhost 或者 127.0.0.1 localhost
MaxFang
2017-01-18 19:39:20 +08:00
@mingl0280
host 里面肯定配置了 127.0.0.1 localhost 的。
update 操作修改这个肯定是可以的,只是常用的 RENAME 操作或是 navicat 修改操作会在特定的情况下出错。
目前暂时没有找到相关的说明,最近已发送相关邮件到 mysql 官方,捉急的英语哇,不知道会不会有下文,如果有的话会在这边贴出来。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/333539

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX