如果你無法訪問mysql服務器作爲根目錄,你應該刪除或不能恢復mysql.user表中的所有根記錄,刪除所有這些記錄並添加一條新記錄。
你應該使用mysql PASSWORD()函數來散列您的明文密碼。 查看更多信息http://dev.mysql.com/doc/refman/5.1/en/password-hashing.html
首先停止mysql服務器並使用--skip-grant-tables啓動mysqld。
[[email protected] ~]# service mysqld stop; mysqld_safe --skip-grant-tables &
哈希您的明文密碼。
mysql> select PASSWORD('CLEARTEXT_PASSWORD');
+-------------------------------------------+
| PASSWORD('CLEARTEXT_PASSWORD') |
+-------------------------------------------+
| *1EADAEB11872E413816FE51216C9134766DF39F9 |
+-------------------------------------------+
1 row in set (0.00 sec)
使用mysql數據庫來應用更改。
mysql> use mysql;
刪除所有根記錄
mysql> delete from user where User='root';
添加新的記錄是root用戶可以從您的IP地址的所有權限訪問。
mysql> insert into `user` VALUES('YOUR_IP_ADDRESS','root','*1EADAEB11872E413816FE51216C9134766DF39F9','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
沖洗變化。
mysql> FLUSH PRIVILEGES;
從mysql命令行退出。
mysql> exit;
重新啓動mysqld服務。
[[email protected] ~]# /etc/init.d/mysqld restart
如果你運行這個mysql命令/ queries,你會得到一個新的訪問mysql服務器。
人們似乎在這個問題/答案http://stackoverflow.com/questions/1709078/how-can-i-restore-the-mysql-root-users-full-privileges – 2009-11-11 03:27:29