MySQL8.4 Enterprise安装Firewall及测试

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: MySQL8.4 Enterprise安装Firewall及测试

参考:https://dev.mysql.com/doc/refman/8.4/en/firewall.html

1.首先执行安装SQL,路径在base/share目录下

cd /u01/mysql3308/base/share
[root@mysql8_3 share]# ls | grep firewall.sql
linux_install_firewall.sql
uninstall_firewall.sql
[root@mysql8_3 share]# pwd
/u01/mysql3308/base/share
[root@mysql8_3 share]# mysql -uroot -p
Enter password:

2.SQL执行完后,有这几张表,并且默认启动firewall

mysql> source linux_install_firewall.sql;
mysql> show tables like 'firewall%';
+-----------------------------+
| Tables_in_mysql (firewall%) |
+-----------------------------+
| firewall_group_allowlist|
| firewall_groups|
| firewall_membership|
| firewall_users|
| firewall_whitelist|
+-----------------------------+
5 rows in set (0.00 sec)
mysql> show global variables like '%mysql_firewall_mode%';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| mysql_firewall_mode | ON|
+---------------------+-------+
1 row in set (0.01 sec)

2.默认开机启动的两种方式

写到配置文件里

[mysqld]
mysql_firewall_mode=ON

执行PERSIST命令

SET PERSIST mysql_firewall_mode = ON;

3.安装调度程序组件

mysql> install component 'file://component_scheduler';
Query OK, 0 rows affected (0.31 sec)
mysql> SHOW VARIABLES LIKE 'component_scheduler%';
+-----------------------------+-------+
| Variable_name| Value |
+-----------------------------+-------+
| component_scheduler.enabled | ON|
+-----------------------------+-------+
1 row in set (0.01 sec)

4.指定mysql_firewall_reload_interval_seconds 系统变量,用来强制以指定的时间间隔从表重新加载内存缓存,配置变量值,重启生效

mysql> SET PERSIST mysql_firewall_reload_interval_seconds = 120;
[root@mysql8_3 data]# systemctl restart mysqld83308.service
mysql> SHOW VARIABLES LIKE 'mysql_firewall_reload_interval_seconds%';
+----------------------------------------+-------+
| Variable_name| Value |
+----------------------------------------+-------+
| mysql_firewall_reload_interval_seconds | 120|
+----------------------------------------+-------+

5.创建三个测试用户并授权

mysql> CREATE USER 'member1'@'localhost' IDENTIFIED BY 'password';
mysql> CREATE USER 'member2'@'localhost' IDENTIFIED BY 'password';
mysql> CREATE USER 'member3'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT ALL ON sakila. TO 'member1'@'localhost';
Query OK, 0 rows affected, 1 warning (0.33 sec)
mysql> GRANT ALL ON sakila.
TO 'member2'@'localhost';
Query OK, 0 rows affected (0.48 sec)
mysql> GRANT ALL ON sakila.* TO 'member3'@'localhost';
Query OK, 0 rows affected (0.44 sec)

6.把root@'localhost',授权为FIREWALL_ADMIN

[root@mysql8_3 share]# mysql -uroot -p
mysql> grant FIREWALL_ADMIN on . to 'root'@'localhost';

7.创建注册到防火墙的组配置fwgrp,并置于RECORDING(训练)中

mysql> CALL mysql.sp_set_firewall_group_mode('fwgrp', 'RECORDING');
+-------------------------------------------------------+
| read_firewall_group_allowlist(arg_group_name,FW.rule) |
+-------------------------------------------------------+
| Imported users: 0
Imported rules: 0|
+-------------------------------------------------------+
1 row in set (0.01 sec)
Query OK, 0 rows affected (0.29 sec)

8.添加一个初始成员到组配置fwgrp

[root@mysql8_3 share]# mysql -uroot -p
mysql> CALL mysql.sp_firewall_group_enlist('fwgrp', 'member1@localhost');
Query OK, 0 rows affected (0.08 sec)

9.登录member1开始训练

[root@mysql8_3 mysql3308]# mysql -umember1 -ppassword
mysql> use sakila;
mysql> SELECT title, release_year FROM film WHERE film_id = 1;
+------------------+--------------+
| title| release_year |
+------------------+--------------+
| ACADEMY DINOSAUR |2006 |
+------------------+--------------+
1 row in set (0.00 sec)
mysql> UPDATE actor SET last_update = NOW() WHERE actor_id = 1;
Query OK, 1 row affected (0.22 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT store_id, COUNT() FROM inventory GROUP BY store_id;
+----------+----------+
| store_id | COUNT(
) |
+----------+----------+
|1 |2270 |
|2 |2311 |
+----------+----------+
2 rows in set (0.00 sec)

10.登陆root@'localhost'检查组配置fwgrp及训练情况

[root@mysql8_3 share]# mysql -uroot -p
mysql> SELECT MODE FROM performance_schema.firewall_groups WHERE NAME = 'fwgrp';
+-----------+
| MODE|
+-----------+
| RECORDING |
+-----------+
1 row in set (0.00 sec)
mysql>SELECT FROM performance_schema.firewall_membership WHERE GROUP_ID = 'fwgrp' ORDER BY MEMBER_ID;
+----------+-------------------+
| GROUP_ID | MEMBER_ID|
+----------+-------------------+
| fwgrp| member1@localhost |
+----------+-------------------+
1 row in set (0.00 sec)
mysql> SELECT RULE FROM performance_schema.firewall_group_allowlist WHERE NAME = 'fwgrp';
+----------------------------------------------------------------------+
| RULE|
+----------------------------------------------------------------------+
| SELECT title , release_year FROM film WHERE film_id = ?|
| UPDATE actor SET last_update = NOW ( ) WHERE actor_id = ?|
| SELECT store_id , COUNT (
) FROM inventory GROUP BY store_id |
+----------------------------------------------------------------------+
3 rows in set (0.01 sec)

11.切换为保护模式

[root@mysql8_3 share]# mysql -uroot -p
mysql> CALL mysql.sp_set_firewall_group_mode('fwgrp', 'PROTECTING');

12.添加另外两个成员到组配置fwgrp

[root@mysql8_3 share]# mysql -uroot -p
mysql> CALL mysql.sp_firewall_group_enlist('fwgrp', 'member2@localhost');
Query OK, 0 rows affected (0.10 sec)
mysql> CALL mysql.sp_firewall_group_enlist('fwgrp', 'member3@localhost');
Query OK, 0 rows affected (0.16 sec)

13.使用初始成员member1测试

[root@mysql8_3 mysql3308]# mysql -umember1 -ppassword
mysql> SELECT title, release_year FROM film WHERE film_id = 98;
+-------------------+--------------+
| title| release_year |
+-------------------+--------------+
| BRIGHT ENCOUNTERS |2006 |
+-------------------+--------------+
1 row in set (0.00 sec)
mysql>SELECT title, release_year FROM film WHERE film_id = 98 OR TRUE;
ERROR 1045 (28000): Statement was blocked by Firewall
mysql> SHOW TABLES LIKE 'customer%';
ERROR 1045 (28000): Statement was blocked by Firewall
mysql>TRUNCATE TABLE mysql.slow_log;
ERROR 1045 (28000): Statement was blocked by Firewall

14.使用初始成员member2测试

[root@mysql8_3 ~]# mysql -umember2 -ppassword -D sakila;
mysql>SELECT title, release_year FROM film WHERE film_id = 98;
+-------------------+--------------+
| title| release_year |
+-------------------+--------------+
| BRIGHT ENCOUNTERS |2006 |
+-------------------+--------------+
1 row in set (0.00 sec)
mysql>SELECT title, release_year FROM film WHERE film_id = 98 OR TRUE;
ERROR 1045 (28000): Statement was blocked by Firewall
mysql> SHOW TABLES LIKE 'customer%';
ERROR 1045 (28000): Statement was blocked by Firewall
mysql>TRUNCATE TABLE mysql.slow_log;
ERROR 1045 (28000): Statement was blocked by Firewall
mysql>
6qrt4xwe6vjg6_a9e8a69a50db493db435b87188ca5328.png

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
19天前
|
Ubuntu 关系型数据库 MySQL
在Ubuntu 22.04上配置和安装MySQL
以上就是在Ubuntu 22.04上配置和安装MySQL的步骤。这个过程可能看起来有点复杂,但只要按照步骤一步步来,你会发现其实并不难。记住,任何时候都不要急于求成,耐心是解决问题的关键。
128 30
|
10天前
|
Ubuntu 关系型数据库 MySQL
mysql8.0安装初始化不需要设定root密码?
uubntu 的mysql安装完成后无法设定root密码
53 10
|
17天前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL下载与安装
本文介绍了MySQL的下载与安装流程(2025.4.29,作者:blue)。主要内容包括:1) 从官方地址下载MySQL;2) 解压文件并配置环境变量;3) 注册MySQL服务并通过命令行验证;4) 启动和停止MySQL服务;5) 修改默认账户密码;6) 登录MySQL。通过详细步骤和截图,帮助用户顺利完成安装与初始配置。
151 13
|
1月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
274 26
|
24天前
|
Oracle 关系型数据库 MySQL
Oracle linux 8 二进制安装 MySQL 8.4企业版
Oracle linux 8 二进制安装 MySQL 8.4企业版
55 1
|
1月前
|
Ubuntu 关系型数据库 MySQL
在Ubuntu系统的Docker上安装MySQL的方法
以上的步骤就是在Ubuntu系统的Docker上安装MySQL的详细方法,希望对你有所帮助!
166 12
|
20天前
|
SQL 缓存 关系型数据库
使用温InnoDB缓冲池启动MySQL测试
使用温InnoDB缓冲池启动MySQL测试
38 0
|
24天前
|
安全 关系型数据库 MySQL
MySQL8使用物理文件恢复MyISAM表测试
MySQL8使用物理文件恢复MyISAM表测试
41 0
|
4月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
29天前
|
SQL 安全 测试技术
2025接口测试全攻略:高并发、安全防护与六大工具实战指南
本文探讨高并发稳定性验证、安全防护实战及六大工具(Postman、RunnerGo、Apipost、JMeter、SoapUI、Fiddler)选型指南,助力构建未来接口测试体系。接口测试旨在验证数据传输、参数合法性、错误处理能力及性能安全性,其重要性体现在早期发现问题、保障系统稳定和支撑持续集成。常用方法包括功能、性能、安全性及兼容性测试,典型场景涵盖前后端分离开发、第三方服务集成与数据一致性检查。选择合适的工具需综合考虑需求与团队协作等因素。
148 24

相关产品

  • 云数据库 RDS MySQL 版