Documentation Home
MySQL 8.0 参考手册  / 第 6 章 安全  / 6.4 安全组件和插件  / 6.4.7 MySQL 企业防火墙  /  6.4.7.2 安装或卸载 MySQL 企业防火墙

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

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 安装涉及运行位于shareMySQL 安装目录中的脚本。

重要的

在按照其说明进行操作之前,请阅读整个部分。该过程的某些部分因您的环境而异。

笔记

如果安装,MySQL Enterprise Firewall 会涉及一些最小的开销,即使在禁用时也是如此。为避免这种开销,请不要安装防火墙,除非您打算使用它。

有关使用说明,请参阅第 6.4.7.3 节,“使用 MySQL 企业防火墙”。有关参考信息,请参阅 第 6.4.7.4 节,“MySQL 企业防火墙参考”

安装 MySQL 企业防火墙

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

在 Windows 上,您可以使用 MySQL Installer 安装 MySQL Enterprise Firewall, 如图 6.2 “Windows 上的 MySQL Enterprise Firewall 安装”所示。选中启用 MySQL 企业防火墙复选框。(Open Firewall port for network access有不同的用途。它指的是 Windows 防火墙,控制 Windows 是否阻止 MySQL 服务器侦听客户端连接的 TCP/IP 端口。)

重要的

如果在服务器配置步骤中选择了 MySQL Enterprise Firewall,则使用 MySQL Installer 安装的 MySQL 8.0.19 会阻止服务器启动。如果服务器启动操作失败,单击“取消”结束配置过程并返回仪表板。您必须卸载服务器。

解决方法是在未选择 MySQL Enterprise Firewall 的情况下运行 MySQL Installer。(也就是说,不要选中启用 MySQL Enterprise Firewall复选框。)然后使用本节后面的手动安装说明安装 MySQL Enterprise Firewall。此问题已在 MySQL 8.0.20 中得到纠正。

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

内容在周围的文字中描述。

要使用 MySQL Workbench 6.3.4 或更高版本安装 MySQL Enterprise Firewall,请参阅 MySQL Enterprise Firewall Interface

要手动安装 MySQL Enterprise Firewall,请查看 shareMySQL 安装目录并选择适合您平台的脚本。可用脚本的不同之处在于用于引用插件库文件的后缀:

  • win_install_firewall.sql:选择此脚本用于 Windows 系统 .dll用作文件名后缀。

  • linux_install_firewall.sql: 选择此脚本用于 Linux 和类似的系统 .so用作文件名后缀。

安装脚本在默认数据库中创建存储过程,因此选择要使用的数据库。然后按如下方式运行脚本,在命令行上命名所选的数据库。这里的示例使用mysql 系统数据库和 Linux 安装脚本。为您的系统进行适当的替换。

$> mysql -u root -p mysql < linux_install_firewall.sql
Enter password: (enter root password here)
笔记

要在源/副本复制、组复制或 InnoDB 集群的上下文中使用 MySQL Enterprise Firewall,您必须在源节点上运行安装脚本之前准备好副本节点。这是必要的,因为 INSTALL PLUGIN脚本中的语句不会被复制。

  1. 在每个副本节点上, INSTALL PLUGIN从安装脚本中提取语句并手动执行它们。

  2. 在源节点上,如前所述运行安装脚本。

使用图形界面或手动安装 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 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;