目次
ユーザ追加して「GRANT文」実行したらエラーがでた
MariaDB(10.4.8)に、MySQLコマンドに「root」でログインして、ユーザ追加と権限の付与をやってました。
GRANT ALL PRIVILEGES ON hogehogedb.* TO 'hogehoge'@'localhost';
すると、突然エラーになるようになりました。
メッセージはこれです。
Index for table 'db' is corrupt; try to repair it
原因はmysql.dbテーブルの破損?
メッセージの意味は
テーブル 'db' のインデックスが破損しています。
ですから・・きっと、そうなんでしょう。
ためしに、テーブルチェックのコマンドをうってみます。
check table mysql.db;
すると表示された結果が
+----------+-------+----------+------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+----------+-------+----------+------------------------------------------------+
| mysql.db | check | warning | Table is marked as crashed |
| mysql.db | check | error | Wrong base information on indexpage at page: 1 |
| mysql.db | check | error | Corrupt |
+----------+-------+----------+------------------------------------------------+
わお!!
本当に破損してます。
データベースレベルの権限管理するシステムテーブルが破損・・とか、しゃれにならないですが、情報をひろってみると、意外にあるみたいです。
破損したテーブルを修復する
破損したままにもしておけないので、修復することにします。
rootで修復コマンドをうちます。
repair table mysql.db;
すると
+----------+--------+----------+----------+f stage done
| Table | Op | Msg_type | Msg_text |
+----------+--------+----------+----------+
| mysql.db | repair | status | OK |
+----------+--------+----------+----------+
と表示されました。
ためしに、チェックコマンドをうってみると
check table mysql.db;
確かに修復されてます。
+----------+-------+----------+----------+tage done
| Table | Op | Msg_type | Msg_text |
+----------+-------+----------+----------+
| mysql.db | check | status | OK |
+----------+-------+----------+----------+
そのあと、GRANT文を実行すると正常に終了しました。
やれやれです。