• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

MySQL 常见错误 ERROR 1044

技术杂谈 勤劳的小蚂蚁 4个月前 (01-08) 87次浏览 已收录 0个评论 扫描二维码


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

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

丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:MySQL 常见错误 ERROR 1044
喜欢 (0)
[247507792@qq.com]
分享 (0)
勤劳的小蚂蚁
关于作者:
温馨提示:本文来源于网络,转载文章皆标明了出处,如果您发现侵权文章,请及时向站长反馈删除。

您必须 登录 才能发表评论!

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00