在安裝軟件時,需要用到Mysql數據庫,要在裡面建一個數據庫,及相應的用戶,執行建庫腳本,很順利,數據庫成功建好,但在執行用戶授權時錯誤就產生了:
- createdatabasecactidb;
- grantalloncactidb.*toroot@localhost;
- 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用戶權限。
- updatedbsetSelect_priv='Y'whereuser='root';
- updatedbsetInsert_priv='Y'whereuser='root';
- updatedbsetUpdate_priv='Y'whereuser='root';
- updatedbsetDelete_priv='Y'whereuser='root';
- updatedbsetCreate_priv='Y'whereuser='root';
- updatedbsetDrop_priv='Y'whereuser='root';
- updatedbsetReferences_priv='Y'whereuser='root';
- updatedbsetGrant_priv='Y'whereuser='root';
- updatedbsetIndex_priv='Y'whereuser='root';
- updatedbsetAlter_priv='Y'whereuser='root';
- updatedbsetCreate_tmp_table_priv='Y'whereuser='root';
- updatedbsetLock_tables_priv='Y'whereuser='root';
- updatedbsetCreate_view_priv='Y'whereuser='root';
- updatedbsetGrant_priv='Y'whereuser='root';
- updatedbsetShow_view_priv='Y'whereuser='root';
- updatedbsetCreate_routine_priv='Y'whereuser='root';
- updatedbsetAlter_routine_priv='Y'whereuser='root';
- updatedbsetExecute_priv='Y'whereuser='root';
再把mysql.user表裡root用戶的所有字段都置為'Y'。
注意:使用--skip-grant-tables啟動mysql時不可使用grant命令的,所以只有我們手工來設置權限表了。
關於MySQL權限表的問題就介紹到這裡,如果大家想了解更多關於MySQL數據庫的知識,不妨到這裡看一下:http://database.51cto.com/mysql/,一定會讓您滿意的哦!