廣告聯播

2009年4月2日 星期四

[MySQL] MySQL root的密碼忘了怎麼辦 ( How to recover MySQL root's Password on CentOS )

From: Polin Wei

step 01 : 停止 mysqld 的服務, 指令: service mysqld stop

[root@jsvr /]# service mysqld stop
Stopping MySQL: [ OK ]


若停不了. 可以先找到 mysqld 的 id , 然後再用 kill -9 mysqld-id 來停止

[root@jsvr /]# ps -ef | grep mysqld
root 20154 18807 0 02:43 pts/2 00:00:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables

[root@jsvr /]# kill -9 20154
[1]+ Killed mysqld_safe --skip-grant-tables


step 02: 在「背景」模式執行 mysqld_safe,並跳過權限檢查, 指令: mysqld_safe --skip-grant-tables &

[root@jsvr /]# mysqld_safe --skip-grant-tables &
[1] 20154
[root@jsvr /]# Starting mysqld daemon with databases from /var/lib/mysql


step 03:以 root帳號登入,此時已經不會詢問密碼
[root@jsvr /]# mysql -u root mysql

step 04: 更換 root密碼,'new-password' 即是新密碼
mysql> update user set Password=PASSWORD('new-password') WHERE User='root';
mysql> update user set Password=PASSWORD('new-password') WHERE user='root';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0


step 05: 寫入權限 flush privileges , 並離開 mysql
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye


step 06: 將mysqld_safe 的服務停掉, 指令: service mysqld stop ; 或將剛才放在背景執行的 mysqld_safe拿到前景,並用 ctrl+c 停止執行 , 若仍停不了, 則使出殺手鐗, 用 step01 的方法 kill -9 來停止 mysqld 的服務

[root@jsvr /]# fg
mysqld_safe --skip-grant-tables
[1]+ Stopped mysqld_safe --skip-grant-tables


step 07: 重新啟動 mysql服務, 指令: service mysqld start
[root@jsvr /]# service mysqld start
Starting MySQL: [ OK ]


這樣 root 的密碼就可以變更成新密碼了

沒有留言:

張貼留言