MySQL がエラーを報告: ファイルが見つかりません: './mysql/plugin.frm' 解決策

MySQL がエラーを報告: ファイルが見つかりません: './mysql/plugin.frm' 解決策

問題を見つける

最近、仕事中に問題が見つかりました。問題は、MySQL ディスクがいっぱいだったことです。データベース ディレクトリのデータを /data3 ディレクトリに移動し、/etc/my.cnf 内の対応する datadir ディレクトリを変更して、権限を付与しました。ただし、service mysql の起動時にエラーが発生しました。以下では詳しく説明しません。詳細な解決策を見てみましょう。

エラー ログには次の内容が表示されます。

2017-09-15 16:01:01 2420 [警告] myisam-recover-options の代わりに固有のオプション プレフィックス myisam-recover を使用することは非推奨であり、将来のリリースで削除される予定です。代わりにフルネームを使用してください。
2017-09-15 16:01:01 2420 [注意] プラグイン「FEDERATED」は無効になっています。
^G/usr/sbin/mysqld: ファイルが見つかりません: './mysql/plugin.frm' (エラー番号: 13 - アクセス権が拒否されました)
2017-09-15 16:01:01 2420 [エラー] mysql.plugin テーブルを開けません。mysql_upgrade を実行して作成してください。
2017-09-15 16:01:01 2420 [注記] InnoDB: アトミックを使用してバッファプールページを参照カウントする
2017-09-15 16:01:01 2420 [注意] InnoDB: InnoDB メモリヒープが無効になっています
2017-09-15 16:01:01 2420 [注記] InnoDB: ミューテックスと rw_locks は GCC アトミック組み込み関数を使用します
2017-09-15 16:01:01 2420 [注意] InnoDB: メモリバリアは使用されません
2017-09-15 16:01:01 2420 [注記] InnoDB: 圧縮テーブルは zlib 1.2.8 を使用します
2017-09-15 16:01:01 2420 [メモ] InnoDB: LinuxネイティブAIOの使用
2017-09-15 16:01:01 2420 [注記] InnoDB: CPU crc32 命令の使用
2017-09-15 16:01:01 2420 [注記] InnoDB: バッファプールを初期化しています。サイズ = 128.0M
2017-09-15 16:01:02 2420 [注記] InnoDB: バッファプールの初期化が完了しました
2017-09-15 16:01:02 2420 [エラー] InnoDB: ./ibdata1 は読み取り/書き込みモードで開くことができません
2017-09-15 16:01:02 2420 [エラー] InnoDB: システム テーブルスペースは書き込み可能である必要があります。
2017-09-15 16:01:02 2420 [エラー] プラグイン 'InnoDB' 初期化関数がエラーを返しました。
2017-09-15 16:01:02 2420 [エラー] プラグイン「InnoDB」をストレージエンジンとして登録できませんでした。
2017-09-15 16:01:02 2420 [エラー] 不明/サポートされていないストレージ エンジン: InnoDB
2017-09-15 16:01:02 2420 [エラー] 中止しています

まず、plugin.frm の権限を確認します。frm は MySQL テーブル構造定義ファイルです。通常、frm ファイルは破損しません。ただし、特殊な状況下で frm ファイルが破損した場合は、あきらめないでください。MyISAM および InnoDB テーブルを修復する場合、MySQL サービスは最初に frm ファイルを呼び出すため、frm ファイルを修復することによってのみ、その後のデータ復旧を実行できます。

次に、plugin.frm に権限があり、mysql の所有者でもあることがわかりました。

root@hutaojie-1-pdd-sh:/data1/mysql/mysql# ll プラグイン。*
-rwxrwxrwx 1 mysql mysql 8586 2016年3月6日 plugin.frm*
-rwxrwx--x 1 mysql mysql 116 2016年3月6日 plugin.MYD*
-rwxrwx--x 1 mysql mysql 2048 2016年3月6日 plugin.MYI*
ルート@hutaojie-1-pdd-sh:/data1/mysql/mysql#

Google で検索したところ、問題は OS にあることがわかりました。Ubuntu の MySQL を yum または rpm でインストールすると、/etc/apparmor.d/usr.sbin.mysqld ファイルが作成されます。そこにデータ ディレクトリがない場合、エラーが報告されます。

/usr/sbin/mysqld: ファイルが見つかりません: './mysql/plugin.frm' (エラー番号: 13 - アクセス権が拒否されました)

回避策

したがって、解決策は、そこに新しい datadir ディレクトリを追加することです。

root@huayuan:/var/lib# vim /etc/apparmor.d/usr.sbin.mysqld 

# vim:構文=apparmor
# 最終更新日: 2007年6月19日火曜日 17:37:30
#include <調整可能/グローバル>

/usr/sbin/mysqld {
 #include <抽象/ベース>
 #include <abstractions/nameservice>
 #include <abstractions/user-tmp>
 #include <abstractions/mysql>
 #include <abstractions/winbind>

 機能 dac_override、
 機能 sys_resource、
 機能設定、
 機能setuid、

 ネットワーク TCP、

 /run/mysqld/mysqld.pid rw、
 /run/mysqld/mysqld.sock w、

 /sys/devices/system/cpu/r、
 #.........ここに新しい datadir ディレクトリを記述し、r の行 1 つと rwk の行 1 つを合計 2 行記述します。
 /data3/mysql/ r,
 /data3/mysql/** rwk、
 # サイト固有の追加と上書き。詳細については、local/README を参照してください。
 #include <local/usr.sbin.mysqld>
}

次に、mysql インスタンスを再起動すると、問題は解決します。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • MySql エラー「テーブル mysql.plugin が存在しません」の解決方法
  • MySQL自動停止プラグインFEDERATEDが無効になっている場合の完璧なソリューション
  • MySQL をデプロイするときに発生する「テーブル mysql.plugin が存在しません」という問題の解決方法

<<:  リモート Linux システムでポートが開いているかどうかを確認する 3 つの方法

>>:  JavaScriptでページスクロールアニメーションを実装する

推薦する

Linux SecureCRT の文字化けの解決方法

SecureCRT が文字化けした文字を表示する状況を見てみましょう。例えば: ではリセットしてみま...

Linux で特定の時間にコマンドを実行する方法

先日、rsync を使用して LAN 上の別のシステムに大きなファイルを転送していました。非常に大き...

Vue+Element UI でサマリーポップアップウィンドウを実装するプロセス全体

シナリオ: 検査文書には n 個の検査詳細があり、検査詳細には n 個の検査項目があります。実装効果...

Vue+Websocketはチャット機能を実装するだけです

この記事では、チャット機能を簡単に実装するためのVue+Websocketの具体的なコードを参考まで...

MySQL ログの設定と表示方法

MySQL には次のログがあります。エラーログ: -log-errクエリログ: -logスロークエリ...

MySQLテーブルの内容の変更を監視し、MySQL binlogを有効にする

序文binlog は、MySQL のすべての追加、削除、および変更ステートメントを記録するバイナリ ...

時間範囲効果を実現するためのJavaScript

この記事では、時間範囲効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します...

Tomcatでcatalina.batがUTF-8に設定されている場合、コンソールに文字化けした文字が表示されます

1. catalina.bat は UTF-8 に設定する必要があります。UTF-8 に設定しないと...

Docker Swarmの概念と使用法の詳細な説明

Docker Swarm は、Docker によって開発されたコンテナ クラスター管理サービスです。...

小さな画面のモバイルデバイス向けにWebページを設計する際に注意すべきこと

その理由は、このタイプの Web ページが WAP と呼ばれるワイヤレス プロトコルから生成されたた...

ubuntu20.04 上の CLion2020.1.3 での ROS のインストールと設定の詳細な説明

1. CLionをダウンロード、インストール、アクティベートするオンラインで提供されるチュートリアル...

MySQL Server 8.0.3 のインストールと設定方法のグラフィックチュートリアル

この文書はMySQL Server 8.0.3のインストールと設定方法を参考のために記録したものです...

Win7 インストール MySQL 5.6 チュートリアル図

目次1. ダウンロード2. インストール3. my.ini ファイルを設定する(デフォルトのエンコー...

Vue3 Vue CLI マルチ環境設定

目次1. はじめに2. 切り替え1. 開発および本番環境の設定ファイルを追加する2. 複数の環境をサ...

iframe ページで js 関数を呼び出すには js を使用します

最近、私は毎日論文提案に取り組んでいます。自分のスキルを発揮して、再びWebをデザインしたくてうずう...