reset MySQL root password

這個案例是寫給那些不小心忘掉 root 密碼的人、不小心把 root 刪掉的人、不小心把 root 權限改掉的人… (總而言之,都是一些不小心對 MySQL 做了蠢事的人 :p) 用的,告訴他們比把 MySQL 砍掉重練還要快的方法。

下面是以更改 root 的密碼為範例,要做其他事情的人請自己參考並且更改內容。

條件:

  • 你必須有那台機器的 shell access 並且可以啟動 mysqld (如果你是用 UNIX)
  • 你必須會使用 command line 的 mysql 介面,並且會輸入 sql 指令

  1. 符合以上條件的話,首先登入那台機器,把你的 mysqld 停下來。
  2. 然後用 --skip-grant-tables --user=root 跑 mysqld

    /usr/local/libexec/mysqld --skip-grant-tables --user=root

    #Windows 使用者就不用加 --user=root

  3. 然後登入你的 MySQL

    mysql -u root

    然後重新設定密碼:

    UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
    FLUSH PRIVILEGES;

  4. 然後記得要砍掉再重跑一次 mysqld

簡單一點的做法:

  1. 開啟一個檔案,輸入下面這段敘述然後存檔成 mysql-init

    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

  2. 把 mysqld 先砍掉,然後用下面這行指令重跑 mysqld

    mysqld_safe --init-file=/path/to/mysql-init & (for UNIX)
    mysqld --init-file=\path\to\mysql-init.txt (for Windows)

  3. 然後就可以用 ‘MyNewPassword’ 登入啦!記得要把 mysql-init 砍掉

參考網頁:

3 Comments »

  1. [...] copied from  http://chiouss0817.wordpress.com/2006/04/30/reset-mysql-root-password/ [...]

  2. 小不點 said

    可以請問一下嗎?
    不小心把 root 刪掉回復的指令是什麼?

  3. Maverick said

    可以請問一下嗎?
    不小心把 root 刪掉回復的指令是什麼?

    你該弄本有講解 SQL 指令的書來看…
    http://dev.mysql.com/doc/refman/4.1/en/adding-users.html

RSS feed for comments on this post · TrackBack URI

Leave a Comment