程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據庫用戶權限表丟失的解決方案

MySQL數據庫用戶權限表丟失的解決方案

編輯:MySQL綜合教程

在安裝軟件時,需要用到Mysql數據庫,要在裡面建一個數據庫,及相應的用戶,執行建庫腳本,很順利,數據庫成功建好,但在執行用戶授權時錯誤就產生了:

  1. createdatabasecactidb;  
  2.  
  3. grantalloncactidb.*toroot@localhost;  
  4.  
  5. grantalloncactidb.*tocactiuser; 

本來這是沒什麼的,但我之前已經把root@localhost這個用戶給刪除了,我只留下了用戶名為root,host是%的用戶,而我平常的操作為了方便都只是用root在本機登錄的,我的mysql也只監聽127.0.0.1這個地址,結果一執行grantalloncactidb.*toroot@localhost;這個命令立即完蛋了,我在本機用root登錄就只能是root@localhost這個用戶的權限,而不是一平常用的root@%這個用戶,但root@localhost基本就是沒有權限,按照Mysql的授權機制,我只有在其它主機登錄才可使用root@%這個用戶,而我根本就不可能從其它地址登錄,這下把我給急壞了。由於嚴格的防火牆策略,我是不可能開放mysql的端口的。後來在網上找了相關資料,用以下方法解決了這個問題:

1、關閉mysql服務:servicemysqldstop。

2、./mysqld_safe--skip-grant-tables重新啟動mysql。

3、重新使用root登錄,此時不需要密碼。

4、登錄後刪除root@local這個用戶。

5、用ps查到mysqld進程,並用kill中止mysql進程。

6、重新啟動mysql進程:servicemysqldstart。

7、當然使用這個方法也可重置root密碼:setpasswordforroot=passwordyourpass');

8、或者也可以重置root用戶權限。

  1. updatedbsetSelect_priv='Y'whereuser='root';  
  2.  
  3. updatedbsetInsert_priv='Y'whereuser='root';  
  4.  
  5. updatedbsetUpdate_priv='Y'whereuser='root';  
  6.  
  7. updatedbsetDelete_priv='Y'whereuser='root';  
  8.  
  9. updatedbsetCreate_priv='Y'whereuser='root';  
  10.  
  11. updatedbsetDrop_priv='Y'whereuser='root';  
  12.  
  13. updatedbsetReferences_priv='Y'whereuser='root';  
  14.  
  15. updatedbsetGrant_priv='Y'whereuser='root';  
  16.  
  17. updatedbsetIndex_priv='Y'whereuser='root';  
  18.  
  19. updatedbsetAlter_priv='Y'whereuser='root';  
  20.  
  21. updatedbsetCreate_tmp_table_priv='Y'whereuser='root';  
  22.  
  23. updatedbsetLock_tables_priv='Y'whereuser='root';  
  24.  
  25. updatedbsetCreate_view_priv='Y'whereuser='root';  
  26.  
  27. updatedbsetGrant_priv='Y'whereuser='root';  
  28.  
  29. updatedbsetShow_view_priv='Y'whereuser='root';  
  30.  
  31. updatedbsetCreate_routine_priv='Y'whereuser='root';  
  32.  
  33. updatedbsetAlter_routine_priv='Y'whereuser='root';  
  34.  
  35. updatedbsetExecute_priv='Y'whereuser='root'; 

再把mysql.user表裡root用戶的所有字段都置為'Y'。

注意:使用--skip-grant-tables啟動mysql時不可使用grant命令的,所以只有我們手工來設置權限表了。

關於MySQL權限表的問題就介紹到這裡,如果大家想了解更多關於MySQL數據庫的知識,不妨到這裡看一下:http://database.51cto.com/mysql/,一定會讓您滿意的哦!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved