MySQL Enterprise Firewall 安装是一种一次性操作,它安装第 6.4.5.1 节,“MySQL Enterprise Firewall的元素”中描述的元素。可以使用图形界面或手动执行安装:
在 Windows 上,MySQL Installer 包含一个为您启用 MySQL Enterprise Firewall 的选项。
MySQL Workbench 6.3.4 或更高版本可以安装 MySQL Enterprise Firewall,启用或禁用已安装的防火墙,或者卸载防火墙。
手动 MySQL Enterprise Firewall 安装涉及运行位于
share
MySQL 安装目录中的脚本。
如果安装,MySQL Enterprise Firewall 会涉及一些最小的开销,即使在禁用时也是如此。为避免这种开销,请不要安装防火墙,除非您打算使用它。
MySQL Enterprise Firewall 不与查询缓存一起工作。如果启用了查询缓存,请在安装防火墙之前将其禁用(请参阅第 8.10.3.3 节,“查询缓存配置”)。
有关使用说明,请参阅第 6.4.5.3 节,“使用 MySQL 企业防火墙”。有关参考信息,请参阅 第 6.4.5.4 节,“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 Workbench 6.3.4 或更高版本安装 MySQL Enterprise Firewall,请参阅 MySQL Enterprise Firewall Interface。
要手动安装 MySQL Enterprise Firewall,请查看
share
MySQL 安装目录并选择适合您平台的脚本。可用脚本的不同之处在于用于引用插件库文件的后缀:
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)
使用图形界面或手动安装 MySQL Enterprise Firewall 应该启用防火墙。要验证这一点,请连接到服务器并执行以下语句:
mysql> SHOW GLOBAL VARIABLES LIKE 'mysql_firewall_mode';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| mysql_firewall_mode | ON |
+---------------------+-------+
如果插件无法初始化,请检查服务器错误日志以获取诊断消息。
可以使用 MySQL Workbench 或手动卸载 MySQL Enterprise Firewall。
要使用 MySQL Workbench 6.3.4 或更高版本卸载 MySQL Enterprise Firewall,请参阅 第 25 章MySQL Workbench中的 MySQL Enterprise Firewall Interface。
要手动卸载 MySQL Enterprise Firewall,请执行以下语句。使用语句IF EXISTS
是因为,根据以前安装的防火墙版本,某些对象可能不存在。
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 mysql_firewall_flush_status;
DROP FUNCTION IF EXISTS normalize_statement;
DROP FUNCTION IF EXISTS read_firewall_users;
DROP FUNCTION IF EXISTS read_firewall_whitelist;
DROP FUNCTION IF EXISTS set_firewall_mode;
DROP PROCEDURE IF EXISTS mysql.sp_reload_firewall_rules;
DROP PROCEDURE IF EXISTS mysql.sp_set_firewall_mode;