MySQL Enterprise Firewall のインストールは、セクション6.4.7.1「MySQL Enterprise Firewall の要素」 で説明されている要素をインストールするワンタイム操作です。 インストールはグラフィカルインタフェースを使用して実行することも、手動で実行することもできます:
Windows では、MySQL Installer に MySQL Enterprise Firewall を有効にするオプションが含まれています。
MySQL Workbench 6.3.4 以上では、MySQL Enterprise Firewall のインストール、インストールされたファイアウォールの有効化または無効化、ファイアウォールのアンインストールを行うことができます。
MySQL Enterprise Firewall の手動インストールでは、MySQL インストールの
share
ディレクトリにあるスクリプトを実行します。
指示に従う前に、このセクション全体をお読みください。 手順の一部は、環境によって異なります。
インストールされている場合、MySQL Enterprise Firewall は、無効化されていても最小限のオーバーヘッドを伴います。 このオーバーヘッドを回避するには、ファイアウォールを使用する予定がないかぎり、ファイアウォールをインストールしないでください。
使用手順については、セクション6.4.7.3「MySQL Enterprise Firewall の使用」 を参照してください。 参照情報については、セクション6.4.7.4「MySQL Enterprise Firewall リファレンス」 を参照してください。
MySQL Enterprise Firewall が古いバージョンの MySQL からすでにインストールされている場合は、このセクションで後述する手順を使用してアンインストールし、現在のバージョンをインストールする前にサーバーを再起動します。 この場合は、構成を再度登録する必要もあります。
Windows では、図6.2「Windows での MySQL Enterprise Firewall のインストール」 に示すように、MySQL Installer を使用して MySQL Enterprise Firewall をインストールできます。 「MySQL Enterprise Firewall の有効化」チェックボックスを選択します。 (「ネットワークアクセス用の Open Firewall ポート」には異なる目的があります。 Windows ファイアウォールを参照し、MySQL サーバーがクライアント接続をリスニングする TCP/IP ポートを Windows でブロックするかどうかを制御します。)
MySQL Installer を使用してインストールされた MySQL 8.0.19 には、サーバーの構成ステップ中に MySQL Enterprise Firewall が選択された場合にサーバーを起動できない問題があります。 サーバーの起動操作が失敗した場合は、
をクリックして構成プロセスを終了し、ダッシュボードに戻ります。 サーバーをアンインストールする必要があります。回避策は、MySQL Enterprise Firewall を選択せずに MySQL Installer を実行することです。 (つまり、「MySQL Enterprise Firewall の有効化」チェックボックスを選択しないでください。) その後、このセクションの後半にある手動インストールの手順を使用して、MySQL Enterprise Firewall をインストールします。 この問題は、MySQL 8.0.20 で修正されています。
MySQL Workbench 6.3.4 以上を使用して MySQL Enterprise Firewall をインストールするには、MySQL Enterprise Firewall Interface を参照してください。
MySQL Enterprise Firewall を手動でインストールするには、MySQL インストールの share
ディレクトリを検索し、ご使用のプラットフォームに適したスクリプトを選択します。 使用可能なスクリプトは、プラグインライブラリファイルの参照に使用される接尾辞とは異なります:
win_install_firewall.sql
: ファイル名の接尾辞として.dll
を使用する Windows システムの場合は、このスクリプトを選択します。linux_install_firewall.sql
: Linux および.so
をファイル名接尾辞として使用する類似システムの場合は、このスクリプトを選択します。
インストールスクリプトはデフォルトデータベースにストアドプロシージャを作成するため、使用するデータベースを選択します。 次に、コマンドラインで選択したデータベースに名前を付けて、次のようにスクリプトを実行します。 この例では、mysql
システムデータベースおよび Linux インストールスクリプトを使用します。 システムに適切な置換を行います。
shell> mysql -u root -p mysql < linux_install_firewall.sql
Enter password: (enter root password here)
ソース/レプリカレプリケーション、グループレプリケーションまたは InnoDB クラスタ のコンテキストで MySQL Enterprise Firewall を使用するには、ソースノードでインストールスクリプトを実行する前にレプリカノードを準備する必要があります。 これが必要なのは、スクリプト内の INSTALL PLUGIN
ステートメントがレプリケートされないためです。
各レプリカノードで、インストールスクリプトから
INSTALL PLUGIN
ステートメントを抽出し、手動で実行します。ソースノードで、前述のようにインストールスクリプトを実行します。
グラフィカルインタフェースを使用して MySQL Enterprise Firewall をインストールするか、手動でファイアウォールを有効にする必要があります。 これを確認するには、サーバーに接続して次のステートメントを実行します:
mysql> SHOW GLOBAL VARIABLES LIKE 'mysql_firewall_mode';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| mysql_firewall_mode | ON |
+---------------------+-------+
プラグインの初期化に失敗した場合は、サーバーエラーログで診断メッセージを確認してください。
MySQL Enterprise Firewall は、MySQL Workbench を使用して、または手動でアンインストールできます。
MySQL Workbench 6.3.4 以上を使用して MySQL Enterprise Firewall をアンインストールするには、第31章「MySQL Workbench」 の MySQL Enterprise Firewall Interface を参照してください。
MySQL Enterprise Firewall を手動でアンインストールするには、次のステートメントを実行します。 ステートメントは、以前にインストールされたファイアウォールバージョンによっては、一部のオブジェクトが存在しないか、それらをインストールしたプラグインをアンインストールすることによって暗黙的に削除される可能性があるため、IF EXISTS
を使用します。
DROP TABLE IF EXISTS mysql.firewall_group_allowlist;
DROP TABLE IF EXISTS mysql.firewall_groups;
DROP TABLE IF EXISTS mysql.firewall_membership;
DROP TABLE IF EXISTS mysql.firewall_users;
DROP TABLE IF EXISTS mysql.firewall_whitelist;
UNINSTALL PLUGIN MYSQL_FIREWALL;
UNINSTALL PLUGIN MYSQL_FIREWALL_USERS;
UNINSTALL PLUGIN MYSQL_FIREWALL_WHITELIST;
DROP FUNCTION IF EXISTS firewall_group_delist;
DROP FUNCTION IF EXISTS firewall_group_enlist;
DROP FUNCTION IF EXISTS mysql_firewall_flush_status;
DROP FUNCTION IF EXISTS normalize_statement;
DROP FUNCTION IF EXISTS read_firewall_group_allowlist;
DROP FUNCTION IF EXISTS read_firewall_groups;
DROP FUNCTION IF EXISTS read_firewall_users;
DROP FUNCTION IF EXISTS read_firewall_whitelist;
DROP FUNCTION IF EXISTS set_firewall_group_mode;
DROP FUNCTION IF EXISTS set_firewall_mode;
DROP PROCEDURE IF EXISTS mysql.sp_firewall_group_delist;
DROP PROCEDURE IF EXISTS mysql.sp_firewall_group_enlist;
DROP PROCEDURE IF EXISTS mysql.sp_reload_firewall_group_rules;
DROP PROCEDURE IF EXISTS mysql.sp_reload_firewall_rules;
DROP PROCEDURE IF EXISTS mysql.sp_set_firewall_group_mode;
DROP PROCEDURE IF EXISTS mysql.sp_set_firewall_group_mode_and_user;
DROP PROCEDURE IF EXISTS mysql.sp_set_firewall_mode;