在使用skip-grant-tables參數的同時,還要加上skip-networking參數:
shell> mysqld_safe --skip-grant-tables --skip-networking &
接著使用SQL重置密碼後,記得去掉skip-networking,以正常方式重啟MySQL服務:
shell> /etc/init.d/mysqld restart
上面的方法需要重啟兩次服務,實際上還能更優雅一點,重啟一次即可:
首先需要把用到的SQL語句保存到一個文本文件裡(/path/to/init/file):
UPDATE mysql.user SET Password=PASSWORD('...') WHERE User='...' AND Host= '...'; FLUSH PRIVILEGES;
接著使用init-file參數啟動MySQL服務,
shell> /etc/init.d/mysql stop shell> mysqld_safe --init-file=/path/to/init/file &
此時,密碼就已經重置了,最後別忘了刪除文件內容,免得洩露密碼。