*MySQL の root を削除してしまった(ので、対処した) 2016年10月2日 [#oe7543ee] &ref(MySQLroot.jpg);~ [[社畜ちゃん台詞メーカー>http://blog.oukasoft.com/OS/]] &ref(MySQLroot.jpg); [[社畜ちゃん台詞メーカー>http://blog.oukasoft.com/OS/]] phpMyAdmin を使って、ユーザをコピーしたり単に増やしたりしている中で、 (経緯はとにかく)間違って root を削除してしまいました((実際にあったのは 6月))。 を削除してしまいました((実際にあったのは 6月))。~ もちろん(!)[[本番環境>http://wwww.dgrc.kit.ac.jp]]です。 サーバの root を削除した訳ではないので復旧できたのですが、 ちょっと困りました。 ので、その記録。 http://blog.katsuma.tv/2007/07/mysql_root_reset.html などを参考にしました。 ** サーバでの作業 [#ma6e6305] サーバの root 権限は持っていませんが、 sudo で root 権限での実行ができる環境です。 MySQLサーバ(mysqld)を停止させる~ 考えるのが面倒なので kill する $ sudo Kill -KILL [PID] $ sudo kill -KILL [PID] 認証をスキップして、 セーフモード(?((MySQLのマニュアルには「mysqld_safe ― MySQL サーバー起動スクリプト」との小見出しがあるので、モードではないようです)))を使って MySQLサーバを起動 $ sudo /usr/bin/mysqld_safe --skip-grant-tables ここで接続していた ssh のプロンプトが帰って来なくなるので((普通はプロンプトは「返る」との漢字だは思いますが、行ったきりで戻って来ないので……))、 別に ssh でサーバに接続する~ 上の mysqld_safe の起動に & を付ければプロンプトは帰って来るが、 以下の作業が正しく行えなかった 対話モードで MySQL を開く(ユーザは root) $ sudo mysql -u root ここからは、sql(の文法)なので、最後に「;」(セミコロン)が必要~ mysql DBを選択 > use mysql; パスワードを設定 > update user set password=PASSWORD('NEW_PASSWORD') where user='root'; 権限を再設定 > update user set Select_priv='Y', Insert_priv='Y', Update_priv='Y', Delete_priv='Y', Create_priv='Y', Grant_priv='Y', Alter_priv='Y' where User='root'; 情報をflush(flush しないとだめ!)、対話モードの mysql を閉じる > flush privileges; > exit; 稼動中の MySQLサーバを停止(kill) $ sudo kill -KILL [PID] MySQLサーバ(mysqld)を起動 $ sudo /etc/init.d/mysqld start $ sudo /etc/rc.d/init.d/mysqld start phpMyAdmin で確認(省略) ふ〜(約2時間) root の権限が不足していたので (phpMyAdmin での表示が元どおりにならなかったのでわかった)、 更に update user を後から行った。 |Today:&counter(today);|Yesterday:&counter(yesterday);|Total:&counter(); since 2 October 2016|