1. 檢查my.cnf,看看有沒有密碼......靠這也算一條啊html
2. 若是可以重啓,
首先使用–skip-grant-tables參數重啓,而後改密碼,再去掉–skip-grant-tables參數重啓, 注意–skip-grant-tables的安全問題http://code.openark.org/blog/mysql/dangers-of-skip-grant-tables, 根據火丁筆記http://huoding.com/2011/06/12/85,還須要加上--skip-networkingmysql
$ mysqld_safe --skip-grant-tables --skip-networking &
接着使用SQL重置密碼後,記得去掉skip-networking,以正常方式重啓MySQL服務:linux
$ /etc/init.d/mysqld restart
上面的方法須要重啓兩次服務,實際上還能更優雅一點,重啓一次便可: 首先須要把用到的SQL語句保存到一個文本文件裏(/path/to/init/file):sql
UPDATE mysql.user SET Password=PASSWORD('...') WHERE User='...' AND Host= '...';
FLUSH PRIVILEGES;
接着使用init-file參數啓動MySQL服務,安全
$ /etc/init.d/mysql stop
$ mysqld_safe --init-file=/path/to/init/file &
此時,密碼就已經重置了,最後別忘了刪除文件內容,省得泄露密碼。unix
3.on linux / unix ONLYrest
$ cd data/mysql
$ cp -rp user.MYD bck_user.MYD_`date +%Y%m%d`cp -rp user.MYD /tmp/user.MYD
$ vi /tmp/user.MYD #(edit the hashed passwords next to root*)cp -rp /tmp/user.MYD user.MYD
$ sudo kill -HUP `pidof mysqld`
4.using an init-file
code
4.這裏還有個第四點 using an init-file, which leads to just one restart of the database instead of two. It also avoids the security issue involved with using skip-grant-tables.htm
5.若是你在MySQL裏邊,那麼可選擇的辦法就太多了
參考 <http://www.cnblogs.com/rootq/archive/2009/05/13/1456335.html>blog