• mysql 创建帐号出现 Access denied for user 'root'@'localhost'错误(转载)


    从供应商那边接手一个MySQL数据库(数据库版本为5.7.21 MySQL Community Server (GPL)),在创建账号时遇到了ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database xxx错误,如下所示

     

     

    mysql> grant all on xxx.* to xxx@'192.168.%' identified by 'xxx';
    ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'xxxx'
    mysql> 

     

    照理说,root用户应该有任何权限,那么为什么出现这个错误呢? 查看当前用户为root@localhost,顺便查看了一下各个root账号的权限。如下所示:

     

     

    mysql> select current_user() from dual;
    +----------------+
    | current_user() |
    +----------------+
    | root@localhost |
    +----------------+
    1 row in set (0.00 sec
     
    mysql> select host,user from user where user='root';
    +-----------+----------+
    | host      | user     |
    +-----------+----------+
    | %         | root     |
    | 127.0.0.1 | root     |
    | ::1       | root     |
    | localhost | root     |
    +-----------+----------+
    7 rows in set (0.00 sec)
     
    mysql>  show grants for root@'localhost';
    +--------------------------------------------------------------+
    | Grants for root@localhost                                    |
    +--------------------------------------------------------------+
    | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'            |
    | GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
    +--------------------------------------------------------------+
    2 rows in set (0.00 sec)
     
    mysql> show grants for root@'127.0.0.1';
    +---------------------------------------------------------------------+
    | Grants for root@127.0.0.1                                           |
    +---------------------------------------------------------------------+
    | GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION |
    +---------------------------------------------------------------------+
    1 row in set (0.00 sec)
     
    mysql> show grants for root@'%';
    +-------------------------------------------+
    | Grants for root@%                         |
    +-------------------------------------------+
    | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' |
    +-------------------------------------------+
    1 row in set (0.00 sec)

     

     

     

        如上所示,root@localhost账号没有WITH GRANT OPTION选项,关于WITH GRANT OPTION选项,如果想让授权的用户,也可以将这些权限授予给其他用户,需要选项 WITH GRANT OPTION 。也就是说有这个选项就可以将权限传递给第三方。这也是上面root@localhost用户给其它用后授权报错的原因,如果以 root@127.0.0.1登录(此账号拥有WITHGRANT OPTION选项),创建用户并授权就不会有这个错误,如下所示:

     

     

    # mysql -host 127.0.0.1 -u root -p
    Enter password: 
     
     
     
     
    mysql>  grant all on xxx.* to xxx@'192.168.%' identified by 'test1249';
    Query OK, 0 rows affected, 1 warning (0.00 sec)
     
     
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

     

    当然还有其它方面的原因也可能会引起这个错误,不过在这个案例当中,确实仅仅是因为上面原因引起。特此记录一下这个案例@!

  • 相关阅读:
    Zend Framework 2.1.5 中根据服务器的环境配置调用数据库等的不同配置
    在基于 Eclipse 的 IDE 中安装和使用 Emmet(ZenCoding)
    【翻译】Emmet(Zen Coding)官方文档 之六 自定义 Emmet
    【翻译】Emmet(Zen Coding)官方文档 之二 缩写
    【翻译】Emmet(Zen Coding)官方文档 之七 一览表
    【翻译】Emmet(Zen Coding)官方文档 之三 CSS 缩写
    【翻译】Emmet(Zen Coding)官方文档 之四 动作
    【翻译】Emmet(Zen Coding)官方文档 之一 web 编程的必备工具
    Zend Framework 2 时区设置警告问题的解决
    【翻译】Emmet (Zen Coding) 元素类型
  • 原文地址:https://www.cnblogs.com/yinliang/p/10969599.html
Copyright © 2020-2023  润新知