› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
MaxFang
V2EX  ›  MySQL

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

  •  
  •   MaxFang · Jan 10, 2017 · 8895 views
    This topic created in 3549 days ago, the information mentioned may be changed or developed.

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

    8 replies  •  2017-01-18 19:39:20 +08:00
    MaxFang
        2
    MaxFang  
    OP
       Jan 10, 2017
    @xia0pia0
    谢谢。
    一个走 socket ,一个走 tcp/ip ,这个我了解的。但是报错不应该出现在修改 host 的时候吧。
    mingyun
        3
    mingyun  
       Jan 10, 2017
    show grants;
    MaxFang
        4
    MaxFang  
    OP
       Jan 11, 2017
    @mingyun
    SHOW GRANTS 这个也没看出异常哇。
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION
    mingl0280
        5
    mingl0280  
       Jan 13, 2017
    有那么麻烦么……
    mingl0280
        6
    mingl0280  
       Jan 13, 2017
    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
        7
    mingl0280  
       Jan 13, 2017
    检查下你有没有设置 /etc/hosts 里的::1 localhost 或者 127.0.0.1 localhost
    MaxFang
        8
    MaxFang  
    OP
       Jan 18, 2017
    @mingl0280
    host 里面肯定配置了 127.0.0.1 localhost 的。
    update 操作修改这个肯定是可以的,只是常用的 RENAME 操作或是 navicat 修改操作会在特定的情况下出错。
    目前暂时没有找到相关的说明,最近已发送相关邮件到 mysql 官方,捉急的英语哇,不知道会不会有下文,如果有的话会在这边贴出来。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4183 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 01:03 · PVG 09:03 · LAX 18:03 · JFK 21:03
    ♥ Do have faith in what you're doing.