經常會忘記mysql的root密碼,尤其是機器一多的時候。上週五把科委的服務器遷移到centos上面,當時把mysql配置好了,也能登錄了,但是今天各省測試的時候,發現mysql鏈接失敗,登錄服務器用命令行登錄發現是 “Access Denied”,明明記得是正確的密碼,又不能登錄了,估計又記錯了。
經常會忘記這些密碼,乾脆記錄一下怎麼樣重置密碼吧。我們知道mysql的用戶信息是保存在mysql的一張表裏面的,如果要重置密碼則需要登錄到mysql的服務器。按照mysql的官方文檔,可以使用不需要密碼的方式啓動mysql服務器,這樣就能不需要密碼登錄了。
先關閉mysql
sudo service mysqld stop
|
然後啓動無權限表限制的服務
sudo mysqld_safe --skip-grant-tables
|
登錄mysql, 設置密碼
mysql set password for 'root'@'localhost' = PASSWORD('yourPassword'); |
注意設置密碼需要使用PASSWORD函數處理,也就是把密碼hash存儲。
重新啓動正常的服務
sudo kill `cat /var/run/mysqld/mysqld.pid` // 也可以通過ps查找pid再kill
sudo service mysqld start
|
當然,其他賬號同理可以修改密碼了。注意不要開啓root的遠程登錄權限。
done
參考: https://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html