6.4.6.2 安装或卸载 MySQL 企业防火墙

MySQL Enterprise Firewall 安装是一次性操作,它安装第 6.4.6.1 节“ MySQL 企业防火墙组件”中描述的组件。可以使用图形界面或手动执行安装:

  • 在 Windows 上,MySQL Installer 包含一个为您启用 MySQL 企业防火墙的选项。

  • MySQL Workbench 6.3.4 或更高版本可以安装 MySQL 企业防火墙,启用或禁用已安装的防火墙或卸载防火墙。

  • 手动 MySQL 企业防火墙安装涉及运行位于 MySQL 安装的share目录中的脚本。

Important

在遵循其说明之前,请先阅读整个部分。该过程的某些部分取决于您的环境。

Note

如果安装了 MySQL Enterprise Firewall,即使禁用,它也将带来一些最小的开销。为避免这种开销,除非计划使用防火墙,否则不要安装防火墙。

Note

MySQL 企业防火墙不能与查询缓存一起使用。如果启用了查询缓存,请在安装防火墙之前将其禁用(请参阅第 8.10.3.3 节“查询缓存配置”)。

有关使用说明,请参见第 6.4.6.3 节“使用 MySQL 企业防火墙”。有关参考信息,请参见第 6.4.6.4 节“ MySQL 企业防火墙参考”

安装 MySQL 企业防火墙

如果已经从旧版本的 MySQL 安装了 MySQL Enterprise Firewall,请按照本节后面给出的说明将其卸载,然后在安装当前版本之前重新启动服务器。在这种情况下,还需要再次注册您的配置。

在 Windows 上,您可以使用 MySQL Installer 来安装 MySQL 企业防火墙,如图 6.2,“在 Windows 上安装 MySQL 企业防火墙”所示。选中启用企业防火墙复选框。 (用于网络访问的开放防火墙端口具有不同的用途.它是指 Windows 防火墙,它控制 Windows 是否阻止 MySQL 服务器侦听 Client 端连接的 TCP/IP 端口.)

图 6.2 Windows 上的 MySQL 企业防火墙安装

内容在周围的 Literals 中描述。

要使用 MySQL Workbench 6.3.4 或更高版本安装 MySQL 企业防火墙,请参阅MySQL 企业防火墙接口

要手动安装 MySQL 企业防火墙,请查看 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)

Note

从 MySQL 5.7.21 开始,对于新安装的 MySQL 企业防火墙,防火墙 table 使用InnoDB而不是MyISAM。对于已经安装了 MySQL Enterprise Firewall 的安装,要升级到 5.7.21 或更高版本,建议您更改防火墙 table 以使用InnoDB

ALTER TABLE mysql.firewall_users ENGINE=InnoDB;
ALTER TABLE mysql.firewall_whitelist ENGINE=InnoDB;

Note

要在主/从复制,组复制或 InnoDB 集群中使用 MySQL 企业防火墙,必须使用 MySQL 5.7.21 或更高版本,并确保防火墙 table 使用InnoDB,如上所述。然后,您必须在主节点或主节点上运行安装脚本之前准备从属或辅助节点。这是必需的,因为不会复制脚本中的INSTALL PLUGIN语句。

  • 在每个从节点或辅助节点上,从安装脚本中提取INSTALL PLUGIN语句并手动执行它们。

  • 在主节点或主节点上,如前所述运行安装脚本。

使用图形界面或手动安装 MySQL Enterprise Firewall 应该启用防火墙。要验证这一点,请连接到服务器并执行以下语句:

mysql> SHOW GLOBAL VARIABLES LIKE 'mysql_firewall_mode';
+---------------------+-------+
| Variable_name       | Value |
+---------------------+-------+
| mysql_firewall_mode | ON    |
+---------------------+-------+

如果插件未能初始化,请检查服务器错误日志以获取诊断消息。

卸载 MySQL 企业防火墙

可以使用 MySQL Workbench 或手动卸载 MySQL Enterprise Firewall。

要使用 MySQL Workbench 6.3.4 或更高版本卸载 MySQL 企业防火墙,请参阅MySQL 企业防火墙接口

要手动卸载 MySQL 企业防火墙,请执行以下语句。假定存储过程是在mysql数据库中创建的。如果过程是在其他数据库中创建的,请适当调整DROP PROCEDURE语句。

DROP TABLE mysql.firewall_whitelist;
DROP TABLE mysql.firewall_users;
UNINSTALL PLUGIN mysql_firewall;
UNINSTALL PLUGIN mysql_firewall_whitelist;
UNINSTALL PLUGIN mysql_firewall_users;
DROP FUNCTION set_firewall_mode;
DROP FUNCTION normalize_statement;
DROP FUNCTION read_firewall_whitelist;
DROP FUNCTION read_firewall_users;
DROP FUNCTION mysql_firewall_flush_status;
DROP PROCEDURE mysql.sp_set_firewall_mode;
DROP PROCEDURE mysql.sp_reload_firewall_rules;