INSTALL COMPONENT component_name [, component_name ] ...
このステートメントは、すぐにアクティブになる 1 つ以上のコンポーネントをインストールします。 コンポーネントは、サーバーおよびその他のコンポーネントで使用可能なサービスを提供します。セクション5.5「MySQL のコンポーネント」 を参照してください。 INSTALL COMPONENT
では、コンポーネントを登録するために mysql.component
システムテーブルに行が追加されるため、そのテーブルに対する INSERT
権限が必要です。
例:
INSTALL COMPONENT 'file://component1', 'file://component2';
コンポーネント名は、file://
で始まり、plugin_dir
システム変数で指定されたディレクトリにある、コンポーネントを実装するファイルのベース名を示す URN です。 コンポーネント名には、.so
や .dll
などのプラットフォーム依存のファイル名接尾辞は含まれません。 (コンポーネント名の解釈自体がサービスによって実行され、コンポーネントインフラストラクチャによってデフォルトのサービス実装を代替実装に置き換えることができるため、これらのネーミング詳細は変更される可能性があります。)
エラーが発生した場合、ステートメントは失敗し、効果はありません。 たとえば、コンポーネント名が間違っている場合、名前付きコンポーネントが存在しないかすでにインストールされている場合、またはコンポーネントの初期化が失敗した場合に発生します。
ローダーサービスはコンポーネントのロードを処理します。これには、レジストリとして機能する mysql.component
システムテーブルへのインストール済コンポーネントの追加が含まれます。 その後のサーバーの再起動では、mysql.component
にリストされているコンポーネントは、起動シーケンス中にローダーサービスによってロードされます。 これは、サーバーが --skip-grant-tables
オプションを使用して起動された場合でも発生します。
コンポーネントがレジストリに存在しないサービスに依存しており、依存するサービスを提供するコンポーネントもインストールせずにコンポーネントをインストールしようとすると、エラーが発生します:
ERROR 3527 (HY000): Cannot satisfy dependency for service 'component_a'
required by component 'component_b'.
この問題を回避するには、すべてのコンポーネントを同じステートメントでインストールするか、依存先のコンポーネントをインストールした後に依存コンポーネントをインストールします。