[MySQL]rootのパスワードを忘れたときのリセット方法

カテゴリ: MySQL

MySQLでrootのパスワードを忘れたときに、リセットする方法です。
mysqldを起動する時に--skip-grant-tablesオプションを使うと一時的に認証機構をOFFに出来るので、この機能を利用します。

--skip-grant-tablesオプション付きでmysqldを起動しているときは、set passwordコマンドが使えないので、mysql.userテーブルのpassword列をupdate文で直接更新します。

# 起動中のMySQLを停止し、--skip-grant-tables付き(認証機構をスキップできる状態)で起動
/etc/init.d/mysqld stop
mysqld_safe --skip-grant-tables &

# rootユーザのパスワードをtest1に変更
mysql --user=root --database=mysql -e "update user set password=PASSWORD('test1') where User='root';"
mysql --user=root --database=mysql -e "flush privileges;"

# 通常モードでmysqlを再起動
/etc/init.d/mysqld stop
/etc/init.d/mysqld start

# パスワードなしで接続できなくなっていることを確認
mysql --user=root 

# パスワード有りで接続できることを確認
mysql --user=root --password=test1

下記のコマンドだとmysqlの-eオプションでパスワードをセットしていますが、コマンドヒストリに生のパスワードが記録されます。ヒストリにパスワードが残るのを避けたい場合は、-eオプションなしでmysqlコマンドを実行し、対話的にupdate文を実行すればよいです。

Amazonでポイントを賢くGETする方法
Amazonギフト券チャージ で最大2.5%もお得!
こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。