zoukankan      html  css  js  c++  java
  • 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)

     

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

  • 相关阅读:
    C语言scanf函数转换说明表及其修饰符表
    C语言printf函数转换说明表及其修饰符表
    JAVA中this和super用法
    JAVA构造器,重载与重写
    初步学习JAVA面向对象初步认识及面向对象内存分析图举例说明
    webpack4.0报WARNING in configuration警告
    chrome开发者工具--使用 Network 面板测量您的网站网络性能。
    随笔记录--Array类型
    PXC(percona xtradb cluster)新加节点避免SST的方法
    pt-online-schema-change原理解析
  • 原文地址:https://www.cnblogs.com/yinliang/p/10969599.html
Copyright © 2011-2022 走看看