从供应商那边接手一个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)

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

最新文章

  1. SharePoint 2013 搜索高级配置(Search Scope)
  2. [Amazon] Amazon IAP for Unity
  3. 用php模拟做服务端侦听端口
  4. Ansible简明使用手册
  5. Think in java 4th读书笔记__last update20151130
  6. Xcode5.0使用iOS6.1SDK及模拟器
  7. SVN的405错误
  8. 【爬虫问题】爬取tv.sohu.com的页面, 提取视频相关信息
  9. .Net中批量添加数据的几种实现方法比较
  10. CSS学习笔记08 浮动
  11. C和C++混合编程之 extern “C”的使用
  12. 51nod 1103 N的倍数 思路:抽屉原理+前缀和
  13. MyBatis 原始Dao开发方式
  14. Unity 游戏框架搭建 (十九) 简易对象池
  15. NB-IoT省电模式:PSM、DRX、eDRX【转】
  16. 背水一战 Windows 10 (117) - 后台任务: 后台下载任务
  17. javascript函数嵌套时arguments的问题
  18. centos6.5安装VNC、远程及启动关闭
  19. SQL Server 2008 附加数据库之后显示为 只读 的解决方法
  20. 57. 激活office时出下以下问题的解决方案

热门文章

  1. 新手学Java,有哪些入门知识点?
  2. 【OJ2216】小奇的数列
  3. SparkStreaming 笔记
  4. 使用BurpSuite和Hydra爆破相关的服务(9.25 第十一天)
  5. P 1021 个位数统计
  6. 关于 python 中 虚拟环 virtualen境的操作
  7. n以内的素数
  8. 吴裕雄--天生自然Django框架开发笔记:Django 安装
  9. 关于Java中内省的总结
  10. Java length、length()、size()区别