MySQLのrootパスワードを忘れてしまった!
MySQLデータベースのサーバをいくつも立ち上げていると、DB管理者のrootパスワードを忘れてしまったりすることが(たまに)あります。rootでログインする機会はあまりありませんが、rootでログインしないと変更できないサーバパラメータなどもあるためrootパスワードがわからないままにしておくのは非常にマズイです。本来はきちんと管理すべきパスワードですが、忘れてしまった場合はパスワードをリセットするしかありません。
1 |
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) |
rootパスワードをリセットする方法
※サーバ環境はCentOS、MySQLとします。
■MySQLのプロセス(サービス)を停止
まずはサーバへSSH接続をします。(方法は省略)
サーバへ接続したらMySQLサービスを停止させます。
1 |
service mysqld stop |
■MySQLをセーフモードで起動
先ほど停止したMySQLサービスをセーフモードで起動させます。
1 |
mysqld_safe --skip-grant-tables & |
■MySQLへrootログイン
セーフモードで起動したMySQLにrootでログインします。セーフモードで起動させているのでパスワード無しでログインすることができます。
1 |
mysql -u root |
■rootパスワードを再設定
MySQLへrootログイン後、rootのパスワードを再設定します。
1 2 3 4 5 |
use mysql;[Enterキー押下] update user set password=PASSWORD("再設定するパスワード") where User='root';[Enterキー押下] flush privileges;[Enterキー押下] |
1 |
Query OK |
と表示されたら設定は完了です。
■MySQLからログアウト
rootパスワードの再設定が完了したら、セーフモード起動のMySQLから一旦ログアウトします。
1 |
quit |
■セーフモード起動のMySQLを停止
セーフモード起動のMySQLを一度停止させます。
1 |
service mysqld stop |
■通常モードでMySQLを起動
セーフモード起動のMySQLを停止させたら、通常モードでMySQLを起動させます。
1 |
service mysqld start |
■完了
以上でrootパスワードの再設定は完了です。rootでログインできるかを確認しておきます。
1 |
mysql -u root -p |