*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|

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS