最近在考MySQL 8.0的OCP ,开个专题专门查漏补缺下

只是做备忘,有的概念只是一笔带过,具体可自行搜索

基于8.0.26

由于该功能只在企业版上,这里没有环境,所有命令和图片来自官网

1. 安装防火墙

可以使用如下方法来安装,一次性的

  • windows中使用MySQL Installer 图形化界面来安装
Image.png
  • 使用MySQL Workbench 6.3.4或更高版本来安装
Image_2.png
  • 使用脚本来手动安装

安装脚本在数据库安装目录的share目录下

    • win_install_firewall.sql
    • linux_install_firewall.sql

这里我们使用linux脚本来安装,这里安装在mysql数据库下面

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

2.查看状态

安装完后默认启用防火墙,可以使用如下方法查看

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

使用mysql_firewall_mode参数来控制是否启用防火墙

3. 卸载防火墙

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;

4. 防火墙权限

主要有如下权限

  • FIREWALL_EXEMPT  豁免权限,防止误操作取消了需要权限的用户

  • FIREWALL_ADMIN  管理员权限,可以对防火墙进行完全控制

  • FIREWALL_USER 该权限允许对自己规则的管理权限

  • EXECUTE  对防火墙相关存储过程的执行权限