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でページスクロールアニメーションを実装する

推薦する

MySql クイック挿入数千万の大規模データの例

データ分析の分野では、データベースは私たちの強力な助けとなります。クエリ時間を受け入れるだけでなく、...

CSS で写真のスタッキング効果を実装するサンプルコード

成果を達成するステップ1. 初期index.html最初の写真、一番上の写真を作成します。写真の i...

MySQL 8.0.18 のインストールと設定方法のグラフィック チュートリアル (Linux)

この記事では、Linux MySQL 8.0.18のインストールと設定のグラフィックチュートリアルを...

権限の問題によりMySQLの設定ファイルmy.cnfを起動できない問題の解決方法

この記事では、権限の問題により MySQL 構成ファイル my.cnf を起動できない場合の関連する...

インターネット接続なしでLinux Centos7にアプリケーションをインストールする方法の詳細な説明

1. 前の章では、プログラムを yum リポジトリに直接インストールできることを学びましたが、そのた...

React-Native スクリーンショットコンポーネント react-native-view-shot の紹介と使い方のまとめ

目次1. 現象2. 解決策3. 要約: 1. 現象1. 要件: 特定の表示ページをキャプチャしてアル...

Reactはラジオコンポーネントのサンプルコードを実装します

この記事の目的は、最も明確な構造を使用していくつかのコンポーネントの基本機能を実装することです。皆さ...

Mysql systemctl start mysqld によって報告されるエラーの解決策

エラーメッセージ:制御プロセスがエラー コードで終了したため、mysqld.service のジョブ...

Vue でのテキストエリア適応高さソリューションの実装

目次隠れた問題適応高さのソリューションまず解決策を提示してください。Vueスタックが必要な学生はvu...

Centos7 に mysql 8.0.13 (rpm) をインストールする詳細なチュートリアル

yum か rpm か? yum によるインストール方法は非常に便利ですが、公式サイトから MySQ...

Vue がルート変更を監視するときに watch メソッドが複数回実行される理由と解決策

目次要件の説明:要件分析:ニーズの解決問題解決私はフロントエンドの新人ですが、バックエンドのバグの中...

最新のウェブフロントエンドフレームワーク10選を紹介(翻訳)

Web 開発の世界では、フレームワークは非常に一般的です。新しいフレームワークやテンプレートが毎日の...

Reactの基本のまとめ

目次序文始めるReactライフサイクルリアクトファイバーリアクトセットステートReactイベントメカ...

Vue 3 での watch と watchEffect の新しい使い方

目次1. 時計の新しい使い方1.1. ウォッチの使用構文1.2. 複数の属性値を監視する1.3. 参...

Nginx がフロントエンド リソースへのクロスドメイン アクセスの問題をどのように解決するかの詳細な説明

フロントエンドのクロスドメイン問題に2日間近く悩まされましたが、ようやくngnxを使って解決したので...