SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

MySQL の rootのパスワードを忘れた、rootパスワードの再設定

mysqlにrootパスワードを設定する、rootパスワードを 忘れたときの再設定の方法。(MySQL5にて)

● rootにパスワードを設定する(通常の場合)

set password for root = password('xxxxxxxx');
flush privileges;

もしくはこちらのコマンドでも。

mysqladmin -u root password 'xxxxxxxx'

rootにパスワードが設定されていないと、一般ユーザーでも「mysql -u root」ができるので必ず設定します。

● rootのパスワードを再設定する(忘れたときの方法)

1、my.cnf 変更

mysqld のセクションに、権限テーブルを読まずに起動するよう設定

[mysqld]
skip-grant-tables

2、mysqld再起動(権限テーブルを読まないで起動)

起動、停止スクリプトがあれば

/etc/init.d/mysqld restart

または、場合によってはこんな形で。

kill `cat /usr/local/var/mysql/mysqld.pid`
sudo -u mysql /usr/local/bin/mysqld_safe &

3、rootのパスワードを設定

skip-grant-tablesしているので、今ならパスワードなしで接続できる状態。

mysql して、これでパスワード設定。

update mysql.user set Password=PASSWORD('xxxxx') where User='root';

バージョンによってはmysqladmin コマンドで設定できる?

mysqladmin -u root password 'xxxxxxxx'

4、my.cnf を元に戻す

skip-grant-tables を外す

5、mysqldを通常通り再起動

/etc/init.d/mysqld restart

6、動作確認

パスワードなしで「mysql -u root」しても、ちゃんとアクセスが拒否されることを確認する。


まとめ

一言で言うと、「–skip-grant-tables オプション付きでmysqlサーバーを起動して、その隙に何とかする。」という作戦。

関連するメモ

コメント(1)

sadabo 2012年8月16日 09:36

他のページでもいろいろ解説がありますが、
最もすっきりした説明でよくわかりました。