メモ : MySQL root パスワードをリセットするには
管理者専用のMySQLアカウントで phpMyAdmin を長らく操作していて、root パスワードが必要になった時、忘れてしまうという事もあるかと思います。本件とは関係ありませんが、先日、root パスワードをリセットする羽目になったので、その時のメモです。
注意!
phpMyAdmin を導入している場合は、一時的に Web サーバを停止して下さい。また、MySQL のポートは Firewall で閉じるなどの対策は先に講じる必要があります。 作業中に外部から不正アクセスされる可能性があります。
MySQL root パスワードを忘れた場合
ひさしく root権限を使用せず忘れてしまった場合は、権限不要モードで MySQL を起動し、以下の手順で mysql の rootパスワードをリセットする必要があります。
mysql デーモンを停止します。
$ su
# service mysqld stop
mysql ユーザーで以下のオプションを付けてパスワード・権限不用モードで起動します。以下のパスは RHEL パッケージのMySQLです。適宜おきかえて下さい。
# su mysql -c '/usr/libexec/mysqld --skip-grant-tables'
別のターミナルから mysql に
# mysql mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
メッセージ省略
mysql> select * from user; ← 現在登録されているmysqlユーザを確認
mysql> update user set Password=null where Host='localhost' and User='root'; Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> exit ← 抜けます
Bye
これで root のパスワードがリセットされた初期状態に戻ります。以下のように mysqladmin コマンドを使用してここで新にパスワードを設定するか、
# mysqladmin --user=root password 新しいパスワード
# mysqladmin reload
※パスワードをクォーテーションで囲む必要ありません。
通常モードで新しく root パスワードを登録しなおします。権限なしモードの mysqld を終了します。 起動中のプロセスを調べます。
現在起動しているmysqld プロセス番号を調べて終了するか
# ps aux | grep mysqld
# kill -TERM 13792
あるいは全ての mysqld プロセスを終了します。
# killall mysqld
mysqld を通常モードで起動します。(RHELの場合)
# service mysqld start
mysqladmin コマンドでrootパスワードを設定していた場合は、
# mysql -u root -p
Enter password:mysqladmin コマンドで設定したパスワード
でログインできます。(-p はパスワードを要求するオプションです)
設定していない場合は、root パスワードは設定されていない状態にあるので以下のコマンドでログインできる筈です。最初に root パスワードを登録した時と同じようにパスワードを指定します。
# mysql -u root
mysql> SET PASSWORD FOR root@localhost=PASSWORD('新しいパスワード');
Query OK, 0 rows affected (0.00 sec)
mysql> exit ← 抜けます
Bye
再度、パスワード無しでログインを試みます。
# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
rootパスワードを設定したため、ログインできません。今度は -p を付けてログインしてみます。
# mysql -u root -p
Enter password: 先ほど設定したrootパスワード
mysql>
ログインできることを確認して終了です。
mysql> exit
以上です。
参考 => A.4.2. 忘れたルートパスワードをリセットする方法