MySQL 8.0 リファレンスマニュアル


13.7.4.4 INSTALL PLUGIN ステートメント

INSTALL PLUGIN plugin_name SONAME 'shared_library_name'

このステートメントは、サーバープラグインをインストールします。 プラグインを登録するために mysql.plugin システムテーブルに行が追加されるため、このテーブルに対する INSERT 権限が必要です。

plugin_name は、ライブラリファイルに含まれているプラグインディスクリプタ構造で定義されているプラグインの名前です (Plugin Data Structuresを参照してください)。 プラグイン名では大文字と小文字は区別されません。 プラグイン名は C ソースファイル、シェルコマンド行、M4 および Bourne シェルスクリプト、SQL 環境などで使用されるため、最大化の互換性のために、プラグイン名は ASCII 文字、数字、およびアンダースコアに制限するようにしてください。

shared_library_name は、プラグインコードを含む共有ライブラリの名前です。 この名前には、ファイル名拡張子が含まれています (libmyplugin.solibmyplugin.dlllibmyplugin.dylib など)。

共有ライブラリは、プラグインディレクトリ (plugin_dir システム変数で指定されているディレクトリ) 内に存在する必要があります。 このライブラリは、サブディレクトリ内ではなく、プラグインディレクトリ自体に存在する必要があります。 デフォルトでは、plugin_dirpkglibdir 構成変数で指定されているディレクトリの下にある plugin ディレクトリですが、サーバーの起動時に plugin_dir の値を設定することによって変更できます。 たとえば、my.cnf ファイル内でその値を設定します。

[mysqld]
plugin_dir=/path/to/plugin/directory

plugin_dir の値が相対パス名である場合は、MySQL ベースディレクトリ (basedir システム変数の値) を基準にしていると見なされます。

INSTALL PLUGIN は、プラグインを使用可能にするために、そのプラグインコードをロードして初期化します。 プラグインは、使用可能になる前にそのプラグインが実行する必要のあるすべての設定を処理するその初期化関数を実行することによって初期化されます。 サーバーがシャットダウンすると、ロードされるプラグインごとに初期化解除関数が実行されるため、プラグインは最終的なクリーンアップを実行できます。

また、INSTALL PLUGIN は、プラグイン名とライブラリファイル名を示す行を mysql.plugin システムテーブルに追加して、プラグインを登録します。 通常の起動シーケンスでは、サーバーは mysql.plugin に登録されているプラグインをロードして初期化します。 つまり、プラグインはサーバーが起動するたびにではなく、1 回だけ INSTALL PLUGIN によってインストールされます。 サーバーが --skip-grant-tables オプションで起動された場合、mysql.plugin テーブルに登録されているプラグインはロードされず、使用できません。

プラグインライブラリには、複数のプラグインを含めることができます。 各プラグインをインストールするには、個別の INSTALL PLUGIN ステートメントを使用します。 各ステートメントは異なるプラグインを指定しますが、そのすべてが同じライブラリ名を指定します。

INSTALL PLUGIN を指定すると、サーバーは、サーバーの起動中と同様にオプション (my.cnf) ファイルを読み取ります。 これにより、プラグインは、これらのファイルからすべての関連オプションを取得できるようになります。 プラグインをロードする前でも、オプションファイルにプラグインオプションを追加できます (loose プリフィクスが使用されている場合)。 また、プラグインをアンインストールしたり、my.cnf を編集したり、プラグインを再度インストールしたりすることもできます。 プラグインをこの方法で再起動すると、サーバーを再起動することなく新しいオプション値を指定できます。

サーバーの起動時に個々のプラグインロードを制御するオプションについては、セクション5.6.1「プラグインのインストールおよびアンインストール」を参照してください。 サーバーにシステムテーブルを読み取らないよう指示する --skip-grant-tables オプションが指定されたとき、1 回のサーバー起動時にプラグインをロードする必要がある場合は、--plugin-load オプションを使用します。 セクション5.1.7「サーバーコマンドオプション」を参照してください。

プラグインを削除するには、UNINSTALL PLUGIN ステートメントを使用します。

プラグインのロードについての追加情報は、セクション5.6.1「プラグインのインストールおよびアンインストール」を参照してください。

インストールされているプラグインを確認するには、SHOW PLUGINS ステートメントを使用するか、INFORMATION_SCHEMAPLUGINS テーブルをクエリーします。

プラグインライブラリを再コンパイルするとき、それを再インストールする必要がある場合は、次の方法のいずれかを使用できます。

  • UNINSTALL PLUGIN を使用してライブラリ内のすべてのプラグインをアンインストールし、新しいプラグインライブラリファイルをプラグインディレクトリにインストールしてから、INSTALL PLUGIN を使用してすべてのプラグインをライブラリにインストールします。 この手順には、サーバーを停止することなく使用できるという利点があります。 ただし、プラグインライブラリに多数のプラグインが含まれている場合は、多数の INSTALL PLUGIN および UNINSTALL PLUGIN ステートメントを発行する必要があります。

  • サーバーを停止し、新しいプラグインライブラリファイルをプラグインディレクトリにインストールしてから、サーバーを再起動します。


関連キーワード:  ステートメント, CREATE, TABLE, サーバー, DROP, plugin, PLUGIN, インストール, 関数, サブクエリー