温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ERROR 1044 (42000): Access denied for user 'root'@'%' to database

发布时间:2020-08-11 18:31:55 来源:ITPUB博客 阅读:2763 作者:urgel_babay 栏目:MySQL数据库
-- 2014.12.10

        昨天根据开发的需要,创建了几个用户,但是在授权的时候报错:
ERROR 1044 (42000): Access denied for user 'root'@'%' to database 'mdm'

在网上搜了一下,大概有以下几种说法:
1、对该数据库权限不足。
2、参数问题
3、user的user列存在空值记录。
以上的解决方法基本上都是需要重启MySQL、而且都是片面的。

这里解释一下,出现这种情况的原因。
     首先这里是用root用户操作,所以对这个数据库的权限绝对是最高级的,但是如果是非root用户操作,就可能是权限的问题,需要root用户授权
     出现上面的报错,很可能,其实应该可以说基本上都是因为my.cnf 文件里面有skip-name-resolve参数,这个参数导致这不能解析hostname或其它方式的登录, 所以登录任何用户,匹配的时候不走root@'localhost',或者127.0.0.1或者::1 ,而是 一个劲的走root@'%'.
再来查看一下每种方式下的root用户的具体权限:

  1. mysql> select * from user\\G;
  2. *************************** 1. row ***************************
  3.                   Host: bidevedw\\_db
  4.                   User: root
  5.               Password: *D013A4E3A5BB01E4239D18D7E93B59B7D2B767AD
  6.            Select_priv: Y
  7.            Insert_priv: Y
  8.            Update_priv: Y
  9.            Delete_priv: Y
  10.            Create_priv: Y
  11.              Drop_priv: Y
  12.            Reload_priv: Y
  13.          Shutdown_priv: Y
  14.           Process_priv: Y
  15.              File_priv: Y
  16.             Grant_priv: Y
  17.        References_priv: Y
  18.             Index_priv: Y
  19.             Alter_priv: Y
  20.           Show_db_priv: Y
  21.             Super_priv: Y
  22.  Create_tmp_table_priv: Y
  23.       Lock_tables_priv: Y
  24.           Execute_priv: Y
  25.        Repl_slave_priv: Y
  26.       Repl_client_priv: Y
  27.       Create_view_priv: Y
  28.         Show_view_priv: Y
  29.    Create_routine_priv: Y
  30.     Alter_routine_priv: Y
  31.       Create_user_priv: Y
  32.             Event_priv: Y
  33.           Trigger_priv: Y
  34. Create_tablespace_priv: Y
  35.               ssl_type:
  36.             ssl_cipher:
  37.            x509_issuer:
  38.           x509_subject:
  39.          max_questions: 0
  40.            max_updates: 0
  41.        max_connections: 0
  42.   max_user_connections: 0
  43.                 plugin:
  44.  authentication_string:
  45.       password_expired: N
  46. *************************** 2. row ***************************
  47.                   Host: ::1
  48.                   User: root
  49.               Password: *D013A4E3A5BB01E4239D18D7E93B59B7D2B767AD
  50.            Select_priv: Y
  51.            Insert_priv: Y
  52.            Update_priv: Y
  53.            Delete_priv: Y
  54.            Create_priv: Y
  55.              Drop_priv: Y
  56.            Reload_priv: Y
  57.          Shutdown_priv: Y
  58.           Process_priv: Y
  59.              File_priv: Y
  60.             Grant_priv: Y
  61.        References_priv: Y
  62.             Index_priv: Y
  63.             Alter_priv: Y
  64.           Show_db_priv: Y
  65.             Super_priv: Y
  66.  Create_tmp_table_priv: Y
  67.       Lock_tables_priv: Y
  68.           Execute_priv: Y
  69.        Repl_slave_priv: Y
  70.       Repl_client_priv: Y
  71.       Create_view_priv: Y
  72.         Show_view_priv: Y
  73.    Create_routine_priv: Y
  74.     Alter_routine_priv: Y
  75.       Create_user_priv: Y
  76.             Event_priv: Y
  77.           Trigger_priv: Y
  78. Create_tablespace_priv: Y
  79.               ssl_type:
  80.             ssl_cipher:
  81.            x509_issuer:
  82.           x509_subject:
  83.          max_questions: 0
  84.            max_updates: 0
  85.        max_connections: 0
  86.   max_user_connections: 0
  87.                 plugin:
  88.  authentication_string:
  89.       password_expired: N
  90. *************************** 3. row ***************************
  91.                   Host: %
  92.                   User: root
  93.               Password: *D013A4E3A5BB01E4239D18D7E93B59B7D2B767AD
  94.            Select_priv: Y
  95.            Insert_priv: Y
  96.            Update_priv: Y
  97.            Delete_priv: Y
  98.            Create_priv: Y
  99.              Drop_priv: Y
  100.            Reload_priv: Y
  101.          Shutdown_priv: Y
  102.           Process_priv: Y
  103.              File_priv: Y
  104.             Grant_priv: N
  105.        References_priv: Y
  106.             Index_priv: Y
  107.             Alter_priv: Y
  108.           Show_db_priv: Y
  109.             Super_priv: Y
  110.  Create_tmp_table_priv: Y
  111.       Lock_tables_priv: Y
  112.           Execute_priv: Y
  113.        Repl_slave_priv: Y
  114.       Repl_client_priv: Y
  115.       Create_view_priv: Y
  116.         Show_view_priv: Y
  117.    Create_routine_priv: Y
  118.     Alter_routine_priv: Y
  119.       Create_user_priv: Y
  120.             Event_priv: Y
  121.           Trigger_priv: Y
  122. Create_tablespace_priv: Y
  123.               ssl_type:
  124.             ssl_cipher:
  125.            x509_issuer:
  126.           x509_subject:
  127.          max_questions: 0
  128.            max_updates: 0
  129.        max_connections: 0
  130.   max_user_connections: 0
  131.                 plugin: mysql_native_password
  132.  authentication_string:
  133.       password_expired: N
  134. *************************** 4. row ***************************
  135.                   Host: %
  136.                   User: u_mdm_r2
  137.               Password: *CCB51F609423C18692BB961A7A83342B8311B6F4
  138.            Select_priv: N
  139.            Insert_priv: N
  140.            Update_priv: N
  141.            Delete_priv: N
  142.            Create_priv: N
  143.              Drop_priv: N
  144.            Reload_priv: N
  145.          Shutdown_priv: N
  146.           Process_priv: N
  147.              File_priv: N
  148.             Grant_priv: N
  149.        References_priv: N
  150.             Index_priv: N
  151.             Alter_priv: N
  152.           Show_db_priv: N
  153.             Super_priv: N
  154.  Create_tmp_table_priv: N
  155.       Lock_tables_priv: N
  156.           Execute_priv: N
  157.        Repl_slave_priv: N
  158.       Repl_client_priv: N
  159.       Create_view_priv: N
  160.         Show_view_priv: N
  161.    Create_routine_priv: N
  162.     Alter_routine_priv: N
  163.       Create_user_priv: N
  164.             Event_priv: N
  165.           Trigger_priv: N
  166. Create_tablespace_priv: N
  167.               ssl_type:
  168.             ssl_cipher:
  169.            x509_issuer:
  170.           x509_subject:
  171.          max_questions: 0
  172.            max_updates: 0
  173.        max_connections: 0
  174.   max_user_connections: 0
  175.                 plugin: mysql_native_password
  176.  authentication_string:
  177.       password_expired: N
  178. ERROR:
  179. No query specified

  180. mysql>
我这里root有三种解析登录方式分别是:Host: bidevedw\_dbHost: ::1Host: %
一般情况还有Host:127.0.0.1Host:localhost我的里面把哪两种删了。
请注意 !
 注意上面每条记录的的红色字体部分Grant_priv: Y
这个表示,以这种方式解析登录的root用户,是否有grant权限,Y则表示有授权限给其他用户的权限,N表示没有。
这里恰好,就是我们要找的原因,因为我的/my.cnf文件里面有skip-name-resolve参数,所以root都是解析到@'%'方式登录,于是就没有grant_priv权限。

解决方法:
1、在不重启MySQL服务的情况下,只需要在登录的时候加上-h参数。
例如:(a). /usr/local/mysql/bin/mysql -uroot -p123456 -h::1
         (b)./usr/local/mysql/bin/mysql -uroot -p123456 -h227.0.0.1
2、需要重启MySQL。把skip-name-resolve参数去掉  ---- 还没验证。不过我记得,如果去掉了,日志里面会有大量的警告信息。我是因为那些警告信息,才添加的这个参数。
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI