溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發(fā)布時間:2020-08-11 18:31:55 來源:ITPUB博客 閱讀:2751 作者:urgel_babay 欄目:MySQL數據庫
-- 2014.12.10

        昨天根據開發(fā)的需要,創(chuàng)建了幾個用戶,但是在授權的時候報錯:
ERROR 1044 (42000): Access denied for user 'root'@'%' to database 'mdm'

在網上搜了一下,大概有以下幾種說法:
1、對該數據庫權限不足。
2、參數問題。
3、user的user列存在空值記錄。
以上的解決方法基本上都是需要重啟MySQL、而且都是片面的。

這里解釋一下,出現(xiàn)這種情況的原因。
     首先這里是用root用戶操作,所以對這個數據庫的權限絕對是最高級的,但是如果是非root用戶操作,就可能是權限的問題,需要root用戶授權。
     出現(xiàn)上面的報錯,很可能,其實應該可以說基本上都是因為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\_db、Host: ::1Host: %
一般情況還有Host:127.0.0.1、Host: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問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI