最近遇到一个奇怪的事, 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
xia0pia0 2017-01-10 14:13:06 +08:00
|
2
MaxFang OP |
3
mingyun 2017-01-10 23:17:28 +08:00
show grants;
|
4
MaxFang OP |
5
mingl0280 2017-01-13 02:52:05 +08:00
有那么麻烦么……
|
6
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; |
7
mingl0280 2017-01-13 02:57:47 +08:00
检查下你有没有设置 /etc/hosts 里的::1 localhost 或者 127.0.0.1 localhost
|