[size=small][size=x-small] 忘記MySQLROOT密碼是在MySQ使用中很常見的問題,可是有很多朋友並不會重設ROOT密碼。這時候常會出現:1045-Acess denied for user:'root'@'localhost'(Usingpassword:YES)之類的錯誤。下面轉載的文章說了如何改密碼的方法。
1、編輯MySQL的設定檔:my.ini
一般在MySQL安裝目錄下有my.ini即MySQL的設定檔。
在此設定檔的最後添加如下一行:
skip-grant-tables
儲存退出編輯。
2、然後重啟MySQL服務
在命令列下執行:
net stop MySQL
net start MySQL
3、設定新的ROOT密碼
然後再在命令列下執行:
MySQL -u root -p MySQL或mysql -u root -p
直接斷行符號無需密碼即可進入資料庫了。
此時,在命令列下執行 use mysql;
現在我們執行如下語句把root密碼更新為:
update user set password=PASSWORD("root") where user='root';
(注意:此時不用使用mysqladmin -u root -p password'你的新密碼'這條命令修改密碼,因為'skip-grant-tables'配置,
不信的話,你可以試用一下,它肯定會報如下所示的錯誤:
F:\Documents and Settings\long>mysqladmin -u root -ppassword 'root'
Enter password:
Warning: single quotes were not trimmed from the password by yourcommand
line client, as you might have expected.
mysqladmin:
You cannot use 'password' command as mysqld runs
with grant tables disabled (was started with--skip-grant-tables).
Use: "mysqladmin flush-privileges password '*'" instead)
exit 退出MySQL。
4、還原設定檔並重啟服務
然後修改MySQL設定檔把剛才添加的那一行'skip-grant-tables'刪除。
再次重起MySQL服務,密碼修改完畢。
用新密碼root試一下吧,又能登入重新進入mysql了?
附mysql修改密碼的一些方法:
1. 用MYSQL的grant語句,例如
mysql -h hostname –u root 命令登入到mysqld server 用grant 命令改變口令:
mysql -h 192.168.1.101 -u root
上邊的192.168.1.101 是偶的mysqld 運行機器,你換成自己的,這樣登入上去,就可以修改密碼了,
其實沒必要這麼麻煩,直接mysql -u root就可以了。
GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITHGRANT OPTION
2. mysqladmin -u 使用者名稱 -p 舊密碼 password 新密碼
例1:給root 加個密碼root。首先進入cmd中,然後鍵入
以下命令,至於在CMD下能否使用mysqladmin,
就要看你的Windows環境變數PATH中是否添加“E:\Program Files\MySQL\MySQL Server5.1\bin;”(請改為你自己的安裝路徑)了。)
mysqladmin -u root password root
註:因為開始時root 沒有密碼,所以-p 舊密碼一項就可以省略了。
例2:再將root 的密碼改為admin。
mysqladmin –u root -proot password admin(注意-p 不要和後面的密碼分
開寫,要寫在一起,不然會出錯,錯誤如下所示:
F:\Documents and Settings\long>mysqladmin -u root -proot password admin
Enter password: ****
mysqladmin: Unknown command: 'root')
當然你也可以這樣寫:mysqladmin –u root -p password admin斷行符號,
然後再輸入你的舊密碼,這樣也是完全也可以的,看你的愛好了.
例3:再將root使用者的密碼去掉.
F:\Documents and Settings\long>mysqladmin -u root -ppassword ;
Enter password: root
此時,root使用者又沒有密碼了.可以通過下面的方法設定:
F:\Documents and Settings\long>mysql -u root
mysql>set password for'root'@'localhost'=password('root');(文法:SET PASSWORD FOR '使用者名稱'@'主機'= PASSWORD('密碼'))
mysql>set password for'root'@'%'=password('root');
//本條可選,這是在配置mysql資料庫,如果你選擇了允許root通過遠程登入進來時,你在mysql資料庫下的user表中,
use mysql;
select * from user;可以看到有兩條記錄,如果你沒有配置這一項的話,只會第一條記錄!
Host User Password
'localhost', 'root', '*9C9F4927129ECC3209D8550DC8B67156FDBF9418',...
'%', 'root', '*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B', ...
通過以上設定,root的密碼將變為root這樣就完成了根使用者root密碼的設定工作。
3. use mysql;
update user set password =password('yourpass')where user='root'
(注:下面的這些方法我本人沒有試過,不知對不對,我只是轉載了一下
下面的方法都在mysql提示符下使用,且必須有mysql的root許可權:
方法4
mysql> INSERT INTO mysql.user(Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES
確切地說這是在增加一個使用者,使用者名稱為jeffrey,密碼為biscuit。
在《mysql中文參考手冊》裡有這個例子,所以我也就寫出來了。
注意要使用PASSWORD函數,然後還要使用FLUSH PRIVILEGES。
方法5
和方法三一樣,只是使用了REPLACE語句
mysql> REPLACE INTO mysql.user(Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit'));
mysql> FLUSH PRIVILEGES
方法6
使用SET PASSWORD語句,
mysql> SET PASSWORD FOR jeffrey@"%" =PASSWORD('biscuit');
你也必須使用PASSWORD()函數,
但是不需要使用FLUSH PRIVILEGES。
方法7
使用GRANT ... IDENTIFIED BY語句
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIEDBY 'biscuit';
這裡PASSWORD()函數是不必要的,也不需要使用FLUSH PRIVILEGES。
注:mysql 新設定使用者或更改密碼後需用flush privileges重新整理MySQL的系統許可權相關表,
否則會出現拒絕訪問,還有一種方法,就是重新啟動mysql伺服器,來使新設定生效。