MySQL 8.0 安全部署指南  /  第 8 章安装 MySQL Enterprise Firewall

第 8 章安装 MySQL Enterprise Firewall

MySQL Enterprise Firewall 是一个应用程序级防火墙,它使数据库管理员能够根据与接受的语句模式的白名单进行匹配来允许或拒绝 SQL 语句的执行。这有助于加强 MySQL 抵御 SQL 注入等攻击,或试图通过在合法查询工作负载特征之外使用应用程序来利用它们。

在防火墙上注册的每个 MySQL 帐户都有自己的语句白名单,从而可以为每个帐户量身定制保护。对于给定的帐户,防火墙可以在记录、保护或检测模式下运行,以接受的语句模式进行训练,主动防御不可接受的语句,或被动检测不可接受的语句。

MySQL Enterprise Firewall 安装是一次性操作,涉及运行位于shareMySQL 安装目录中的脚本。

安装 MySQL 企业防火墙:

  1. 运行linux_install_firewall.sql位于 /usr/local/mysql/share目录中的脚本。

    安装脚本在默认数据库中创建存储过程,因此选择要使用的数据库。然后按如下方式运行脚本,在命令行上命名所选的数据库。此部署使用mysql 数据库。

    $> cd /usr/local/mysql
    $> bin/mysql -u root -p mysql < /usr/local/mysql/share/linux_install_firewall.sql
    Enter password: (enter root password here)
  2. 要启用防火墙,请启用 mysql_firewall_mode系统变量。默认情况下,安装防火墙时会启用此变量。要显式配置防火墙状态,请将其添加[mysqld] 到 MySQL 配置文件中的选项组下:

    mysql_firewall_mode=ON
  3. 重新启动 MySQL 服务器以应用新的配置设置。

    $> systemctl restart mysqld
  4. 要验证 MySQL Enterprise Firewall 是否已启用,请连接到服务器并执行以下语句:

    $> cd /usr/local/mysql 
    $> bin/mysql -u root -p
    Enter password: (enter the root password here)
    mysql> SHOW GLOBAL VARIABLES LIKE 'mysql_firewall_mode';
    +---------------------+-------+
    | Variable_name       | Value |
    +---------------------+-------+
    | mysql_firewall_mode | ON    |
    +---------------------+-------+

MySQL Enterprise Firewall 现已启用并可供使用。有关向防火墙注册帐户和配置操作模式的信息,请参阅使用 MySQL 企业防火墙。提供了一个例子,演示如何向防火墙注册一个帐户,使用防火墙学习帐户可接受的语句,并防止帐户执行不可接受的语句。