データベースの「Cannot load from mysql.proc. The table is probably corrupted」を「mysql_upgrade」で解決する

テクノロジー

UpdraftPlusでバックアップを取ったところ、ログでデータベースが破損していると出ていました。

0119.659 (0) ルーチンステータス (Cannot load from mysql.proc. The table is probably corrupted - SHOW FUNCTION STATUS WHERE DB = 'XXX-XXXXX') を取得しようとした際にエラーが発生しました

調べてみたらMariadbをアップグレードした際に古いデータベースが残ったままになり、エラーが出るとのこと。

どうやら「mysql_upgrade」というコマンドを実行すると解決できるそうです。

ユーザーを指定して実行してみます。

XXX@XXXXX:~ $ mysql_upgrade -u root -p
Enter password:
Reading datadir from the MariaDB server failed. Got the following error when executing the 'mysql' command line client
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql'
FATAL ERROR: Upgrade failed

アクセス拒否のエラーが出て進めませんでした。

エラーが発生しても続行する強制コマンド「- -force」なるものがあるそうなので、sudoコマンドを追加して実行してみます。

XXX@XXXXX:~ $ sudo mysql_upgrade -u root -p --force
[sudo] password for XXX:
Enter password:
Reading datadir from the MariaDB server failed. Got the following error when executing the 'mysql' command line client
ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database 'mysql'
FATAL ERROR: Upgrade failed

うーん、またしてもエラー。

そういえばセキュリティー対策でrootの権限を全て外していたのを忘れていました。

全ての権限を付与しているユーザーで実行します。

XXX@XXXXX:~ $ sudo mysql_upgrade -u XXX -p --force
Enter password:
Phase 1/7: Checking and upgrading mysql database
Processing databases
(中略)
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK

うまくいきました。

念のためサービスを再起動。

XXX@XXXXX:~ $ sudo systemctl restart mariadb

ユーザー権限を下手に弄っていないならrootでそのまま成功するはずです。

無事、UpdraftPlusでデータベースが壊れているとのエラーも消えていました。

コメント

タイトルとURLをコピーしました