Learning site for website creation

MySQLに突然アクセスできなくなった時の対処法

公開日:2021年07月29日 更新日:2022年07月29日

昨日までMySQLにアクセスできていたユーザーがアクセス不能になった場合の備忘録。

PHPからデータベースにアクセスした際のエラーは以下。

SQLSTATE[HY000] [1044] Access denied for user 'UserName'@'localhost' to database 'DBName'

ひとまずユーザーを再度作り直そうとシェルからDROP USERした際のエラーが以下。

MariaDB [(none)]> DROP USER 'UserName'@'localhost';
ERROR 1034 (HY000): Index for table 'db' is corrupt; try to repair it

エラーがでたので対象ユーザーを確認すると削除されている。

MariaDB [(none)]> SELECT user, host FROM mysql.user;
+------+-----------+
| User | Host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
| pma  | localhost |
| root | localhost |
+------+-----------+
4 rows in set (0.003 sec)

削除されたユーザーの作成を試みるとエラー。

MariaDB [(none)]> GRANT ALL ON sample.* TO UserName@localhost IDENTIFIED BY 'Pass';
ERROR 1030 (HY000): Got error 176 "Read page with wrong checksum" from storage engine Aria

phpMyAdminを起動してDB領域「mysql」を選択。

「すべてチェックする」をチェックして「テーブルを修復する」を選択。

テーブルの修復が完了。

修復後に削除されたユーザーを再作成すると今度はエラーなく実行された。

MariaDB [(none)]> GRANT ALL ON sample.* TO UserName@localhost IDENTIFIED BY 'Pass';
Query OK, 0 rows affected (0.007 sec)

ユーザーを再作成後、PHPからDBに接続すると問題なく動くようになった。