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サーバーを起動して、その隙に何とかする。」という作戦。
sadabo 2012年8月16日 09:36
他のページでもいろいろ解説がありますが、
最もすっきりした説明でよくわかりました。