【MySQL/phpMyAdmin】rootユーザーを消してしまい、HY000/2002エラーやcontroluser関連で接続できなくなった件、対処した
| 更新: 2024/08/31 | 2350文字
今回は(レンタルサーバーだとここまで操作しないんで需要があるかわかりませんが)、データベースMySQL/phpMyAdminのエラー対応話題です。xamppのMySQL/phpMyAdminで接続できなくなった状況に対処しました。さっそく状況や対応方法を確認
目次
発生した状況~xampp/mysql/backup復旧時に、データベース接続不可
普段、管理人は一部の取引先からデータベース操作を伴う依頼が来たりしています。今回は、自分が売ったり活用したりする用のアプリを作っていたんですけど、データベース操作時にtestユーザー削除とどうじに、うっかりrootユーザーを消してしまいました。
そこで、xampp/mysql/backup内に入っていたデータを移植して、復旧を試みました。データベース操作のときは、バックアップがあると、やっぱり安心です。
データ移植後、xammpのmysqlを再起動して、phpMyAdminに入ろうとしたら、入れなくなっていて、大量のエラーが出てしまいました。以下、そのエラーメッセの内容です。
mysqli::real_connect(): (HY000/2002):
対象のコンピューターによって拒否されたため、接続できませんでした。
設定ファイルに定義されている管理ユーザ(controluser)での接続に失敗しました。
mysqli::real_connect(): (HY000/2002):
対象のコンピューターによって拒否されたため、接続できませんでした。
MySQL サーバに接続しようとしましたが拒否されました。
config.inc.php のホスト、ユーザ名、パスワードが MySQL サーバの管理者から与えられた情報と一致するか確認してください
なんかヤバそうな感じになっていますが、管理ユーザ(controluser)・config.inc.phpあたりがポイントになりそうです。さっそくこのファイルを見ていきましょうか。
原因および対処した内容(xammp/phpmyadmin/config.inc.phpのユーザー)
で、該当のxammp/phpmyadmin/config.inc.phpを確認してみました。原因わかりましたね~。 $cfg['Servers'][$i]['user']、$cfg['Servers'][$i]['controluser']なんですけど、このgmn_userが新しく作ったユーザーでバックアップには反映していなくて、それにもかかわらず設定がそのままになっていた、というところです。
バックアップ内には、間違って削除してしまったrootユーザーおよびパスワードのデータが残っていたため(デフォルトではrootアカウントのログイン用パスワードは空欄だが、設定変えてた)、その元の状態になるよう、user・controluserを変更しました。
なお、controluserはphpMyAdminが共有されている場合、ここに指定したユーザーのみ環境保管領域へのアクセス権を与えるように設定することが推奨されているそうです(以下ドキュメントで確認)。ユーザー一人だけのときは使わなそうな気がします。
phpMyAdmin 6.0.0-dev ドキュメント・サーバ接続設定
https://docs.phpmyadmin.net/ja/latest/config.html?highlight=controluser#server-connection-settings
対応後
そんな感じでxammp/phpmyadmin/config.inc.phpを設定したところ、rootユーザーでエラーも出ずにphpmyadminに入れるようになりました。
おまけ・userとcontroluserが違う場合テスト
ちょっと実験。追加ユーザー(権限は弱め・テーブル追加や編集などの操作はできる)、rootユーザー(全部の権限ある)を設定して、userに追加ユーザーを指定してログイン、controluserはrootユーザーというように設定を変えてみました。
この状態で追加ユーザーがユーザアカウントの権限を編集しようとすると、『#1045 – ユーザー 〇〇@'localhost' を拒否します』が出ます。この動作は初めて知りました。わからん点もまだ多いので、ユーザーごとの権限コントロールは今後も調査してみます。
あとがき・まとめ
- rootユーザーを消したときバックアップから復旧した
- phpmyadmin/config.inc.php設定は、バックアップにない新しいユーザーの設定になっていたため、接続できなかった
- バックアップからrootユーザーを復旧したため、config.inc.phpもその内容に書き換えて、接続できるようにした
まとめると、こんなところでしょうか。MySQL/phpMyAdmin操作はちょくちょくやっているとはいえ、まだそこまで得意ではないので、今後も利用して理解を深めていきます。
【カテゴリ】- サイトエラー対策と復旧
【タグ】- データベース