admin管理员组

文章数量:1029022

MySQL8.4 Enterprise安装Firewall及测试

参考:.4/en/firewall.html

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

代码语言:javascript代码运行次数:0运行复制
cd /u01/mysql3308/base/share[root@mysql8_3 share]# ls | grep firewall.sqllinux_install_firewall.sqluninstall_firewall.sql[root@mysql8_3 share]# pwd/u01/mysql3308/base/share[root@mysql8_3 share]# mysql -uroot -pEnter password:

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

代码语言:javascript代码运行次数:0运行复制
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.默认开机启动的两种方式

写到配置文件里

代码语言:javascript代码运行次数:0运行复制
[mysqld]mysql_firewall_mode=ON

执行PERSIST命令

代码语言:javascript代码运行次数:0运行复制
SET PERSIST mysql_firewall_mode = ON;

3.安装调度程序组件

代码语言:javascript代码运行次数:0运行复制
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 系统变量,用来强制以指定的时间间隔从表重新加载内存缓存,配置变量值,重启生效

代码语言:javascript代码运行次数:0运行复制
mysql> SET PERSIST mysql_firewall_reload_interval_seconds = 120;[root@mysql8_3 data]# systemctl restart mysqld83308.servicemysql> SHOW VARIABLES LIKE 'mysql_firewall_reload_interval_seconds%';+----------------------------------------+-------+| Variable_name| Value |+----------------------------------------+-------+| mysql_firewall_reload_interval_seconds | 120|+----------------------------------------+-------+

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

代码语言:javascript代码运行次数:0运行复制
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

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 share]# mysql -uroot -pmysql> grant FIREWALL_ADMIN on *.* to 'root'@'localhost';

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

代码语言:javascript代码运行次数:0运行复制
mysql> CALL mysql.sp_set_firewall_group_mode('fwgrp', 'RECORDING');+-------------------------------------------------------+| read_firewall_group_allowlist(arg_group_name,FW.rule) |+-------------------------------------------------------+| Imported users: 0Imported rules: 0|+-------------------------------------------------------+1 row in set (0.01 sec)Query OK, 0 rows affected (0.29 sec)

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

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 share]# mysql -uroot -pmysql> CALL mysql.sp_firewall_group_enlist('fwgrp', 'member1@localhost');Query OK, 0 rows affected (0.08 sec)

9.登录member1开始训练

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 mysql3308]# mysql -umember1 -ppasswordmysql> 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: 0mysql> 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及训练情况

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 share]# mysql -uroot -pmysql> 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.切换为保护模式

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 share]# mysql -uroot -pmysql> CALL mysql.sp_set_firewall_group_mode('fwgrp', 'PROTECTING');

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

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 share]# mysql -uroot -pmysql> 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测试

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 mysql3308]# mysql -umember1 -ppasswordmysql> 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 Firewallmysql> SHOW TABLES LIKE 'customer%';ERROR 1045 (28000): Statement was blocked by Firewallmysql>TRUNCATE TABLE mysql.slow_log;ERROR 1045 (28000): Statement was blocked by Firewall

14.使用初始成员member2测试

代码语言:javascript代码运行次数:0运行复制
[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 Firewallmysql> SHOW TABLES LIKE 'customer%';ERROR 1045 (28000): Statement was blocked by Firewallmysql>TRUNCATE TABLE mysql.slow_log;ERROR 1045 (28000): Statement was blocked by Firewallmysql>
图片

MySQL8.4 Enterprise安装Firewall及测试

参考:.4/en/firewall.html

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

代码语言:javascript代码运行次数:0运行复制
cd /u01/mysql3308/base/share[root@mysql8_3 share]# ls | grep firewall.sqllinux_install_firewall.sqluninstall_firewall.sql[root@mysql8_3 share]# pwd/u01/mysql3308/base/share[root@mysql8_3 share]# mysql -uroot -pEnter password:

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

代码语言:javascript代码运行次数:0运行复制
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.默认开机启动的两种方式

写到配置文件里

代码语言:javascript代码运行次数:0运行复制
[mysqld]mysql_firewall_mode=ON

执行PERSIST命令

代码语言:javascript代码运行次数:0运行复制
SET PERSIST mysql_firewall_mode = ON;

3.安装调度程序组件

代码语言:javascript代码运行次数:0运行复制
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 系统变量,用来强制以指定的时间间隔从表重新加载内存缓存,配置变量值,重启生效

代码语言:javascript代码运行次数:0运行复制
mysql> SET PERSIST mysql_firewall_reload_interval_seconds = 120;[root@mysql8_3 data]# systemctl restart mysqld83308.servicemysql> SHOW VARIABLES LIKE 'mysql_firewall_reload_interval_seconds%';+----------------------------------------+-------+| Variable_name| Value |+----------------------------------------+-------+| mysql_firewall_reload_interval_seconds | 120|+----------------------------------------+-------+

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

代码语言:javascript代码运行次数:0运行复制
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

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 share]# mysql -uroot -pmysql> grant FIREWALL_ADMIN on *.* to 'root'@'localhost';

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

代码语言:javascript代码运行次数:0运行复制
mysql> CALL mysql.sp_set_firewall_group_mode('fwgrp', 'RECORDING');+-------------------------------------------------------+| read_firewall_group_allowlist(arg_group_name,FW.rule) |+-------------------------------------------------------+| Imported users: 0Imported rules: 0|+-------------------------------------------------------+1 row in set (0.01 sec)Query OK, 0 rows affected (0.29 sec)

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

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 share]# mysql -uroot -pmysql> CALL mysql.sp_firewall_group_enlist('fwgrp', 'member1@localhost');Query OK, 0 rows affected (0.08 sec)

9.登录member1开始训练

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 mysql3308]# mysql -umember1 -ppasswordmysql> 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: 0mysql> 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及训练情况

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 share]# mysql -uroot -pmysql> 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.切换为保护模式

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 share]# mysql -uroot -pmysql> CALL mysql.sp_set_firewall_group_mode('fwgrp', 'PROTECTING');

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

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 share]# mysql -uroot -pmysql> 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测试

代码语言:javascript代码运行次数:0运行复制
[root@mysql8_3 mysql3308]# mysql -umember1 -ppasswordmysql> 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 Firewallmysql> SHOW TABLES LIKE 'customer%';ERROR 1045 (28000): Statement was blocked by Firewallmysql>TRUNCATE TABLE mysql.slow_log;ERROR 1045 (28000): Statement was blocked by Firewall

14.使用初始成员member2测试

代码语言:javascript代码运行次数:0运行复制
[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 Firewallmysql> SHOW TABLES LIKE 'customer%';ERROR 1045 (28000): Statement was blocked by Firewallmysql>TRUNCATE TABLE mysql.slow_log;ERROR 1045 (28000): Statement was blocked by Firewallmysql>
图片

本文标签: MySQL84 Enterprise安装Firewall及测试