在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。
需要完整版PDF学习资源
需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
🔥 Mycat实现分库分表:点我学习
🔥 Mycat实现单库水平分表、按月分表:点我学习
🔥 Mycat高可用方案-HAProxy+Keepalived:点我学习
目录
一、🚩权限配置
1.1、user标签权限控制
目前 Mycat
对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制。是通过 server.xml
的 user
标签进行配置。
server.xml
的 user
部分标签例子:
<user name="mycat" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="defaultSchema">TESTDB</property>
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
<property name="defaultSchema">TESTDB</property>
</user>
配置说明
name
:应用连接中间件逻辑库的用户名password
:该用户名对应的密码schemas
:应用当前连接的逻辑库中所对应的逻辑表。可以配置一个或多个,多个使用,
分开readOnly
:是否只读
测试案例
案例一
使用user
用户,权限为只读,即readOnly: true
。验证是否可以查询和写入数据。
- 使用
user
用户登录,运行命令如下
mysql -uuser -puser -h 192.168.110.145 -P8066
- 切换到
TESTDB
数据库
use TESTDB;
- 查询
orders
数据
mysql> select \* from orders;
+--------+------------+-------------+-----------+
| id | order_type | customer_id | amount |
+--------+------------+-------------+-----------+
| 1 | 101 | 100 | 100100.00 |
| 2 | 101 | 100 | 100300.00 |
| 6 | 102 | 100 | 100020.00 |
| 3 | 101 | 101 | 120000.00 |
| 4 | 101 | 101 | 103000.00 |
| 5 | 102 | 101 | 100400.00 |
| 400100 | 102 | 101 | 1000.00 |
| 400101 | 102 | 101 | 1000.00 |
| 400200 | 102 | 101 | 1000.00 |
| 400201 | 102 | 101 | 1000.00 |
+--------+------------+-------------+-----------+
10 rows in set (0.09 sec)
- 执行插入数据
SQL
insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
- 可以看到运行结果,插入失败,用户只有只读权限,如下:
mysql> insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
ERROR 1495 (HY000): User readonly
案例二
使用mycat
用户,权限为可读可写,即readOnly: false
。验证是否可以查询和写入数据。
- 使用
mycat
用户登录,运行命令如下
mysql -umycat -p123456 -h 192.168.110.145 -P8066
- 切换到
TESTDB
数据库
use TESTDB;
- 查询
orders
数据
mysql> select \* from orders;
+--------+------------+-------------+-----------+
| id | order_type | customer_id | amount |
+--------+------------+-------------+-----------+
| 1 | 101 | 100 | 100100.00 |
| 2 | 101 | 100 | 100300.00 |
| 6 | 102 | 100 | 100020.00 |
| 3 | 101 | 101 | 120000.00 |
| 4 | 101 | 101 | 103000.00 |
| 5 | 102 | 101 | 100400.00 |
| 400100 | 102 | 101 | 1000.00 |
| 400101 | 102 | 101 | 1000.00 |
| 400200 | 102 | 101 | 1000.00 |
| 400201 | 102 | 101 | 1000.00 |
+--------+------------+-------------+-----------+
10 rows in set (0.01 sec)
- 执行插入数据
SQL
insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
- 可看到运行结果,插入成功,如下:
mysql> insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000);
Query OK, 1 row affected (0.02 sec)
1.2、privileges 标签权限控制
在 user
标签下的 privileges
标签可以对逻辑库(schema
)、表(table
)进行精细化的 DML
权限控制。
privileges
标签下的 check
属性,如为 true
开启权限检查,为 false
不开启,默认为 false
。
由于 Mycat
一个用户的 schemas
属性可配置多个逻辑库(schema
) ,所以 privileges
的下级节点 schema
节点同样可配置多个,对多库多表进行细粒度的 DML
权限控制。
server.xml
的 privileges
部分标签,进行配置orders
表没有增删改查权限
<user name="mycat" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="defaultSchema">TESTDB</property>
<!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->
<!-- 表级 DML 权限设置 -->
<privileges check="true">
<schema name="TESTDB" dml="1111" >
<table name="orders" dml="0000"></table>
<!-- <table name="tb02" dml="1111"></table> -->
</schema>
</privileges>
</user>
参数配置说明:
check
:是否开启DML
权限设置配置说明如下
DML 权限 | 增加(insert) | 更新(update) | 查询(select) | 删除(delete) |
---|---|---|---|---|
0000 | ❌ | ❌ | ❌ | ❌ |
0010 | ❌ | ❌ | ⭕ | ❌ |
1110 | ⭕ | ❌ | ❌ | ❌ |
1111 | ⭕ | ⭕ | ⭕ | ⭕ |
测试案例
案例一
使用mycat
用户,privileges
配置orders
表权限为禁止增删改查(dml="0000"
),验证是否可以查询出数据,验证是否可以写入数据。
- 重启
Mycat
,使用mycat
用户登录,命令如下:
mysql -umycat -p123456 -h 192.168.110.145 -P8066
- 切换到
TESTDB
数据库
use TESTDB;
- 查询
orders
数据
select \* from orders;
- 可以看到禁止该用户查询数据,如下:
mysql> select \* from orders;
ERROR 3012 (HY000): The statement DML privilege check is not passed, reject for user 'mycat'
- 执行插入数据
SQL
,如下:
insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
- 可看到运行结果,禁止该用户插入数据,如下:
mysql> insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
ERROR 3012 (HY000): The statement DML privilege check is not passed, reject for user 'mycat'
案例二
使用mycat
用户,privileges
配置orders
表权限为可以增删改查(dml="1111"
),验证是否可以查询出数据,验证是否可以写入数据。
- 修改配置文件
server.xml
的name
为mycat
的user
标签部分。内容如下:
<user name="mycat" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB</property>
<property name="defaultSchema">TESTDB</property>
<!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 -->
<!-- 表级 DML 权限设置 -->
<privileges check="true">
<schema name="TESTDB" dml="1111" >
<table name="orders" dml="1111"></table>
<!-- <table name="tb02" dml="1111"></table> -->
</schema>
</privileges>
</user>
- 重启
Mycat
,使用mycat
用户登录,命令如下:
mysql -umycat -p123456 -h 192.168.110.145 -P8066
- 切换到
TESTDB
数据库
use TESTDB;
- 查询
orders
数据
select \* from orders;
- 可以看到查询数据,如下:
mysql> select \* from orders;
+--------+------------+-------------+-----------+
| id | order_type | customer_id | amount |
+--------+------------+-------------+-----------+
| 1 | 101 | 100 | 100100.00 |
| 2 | 101 | 100 | 100300.00 |
| 6 | 102 | 100 | 100020.00 |
| 3 | 101 | 101 | 120000.00 |
| 4 | 101 | 101 | 103000.00 |
| 5 | 102 | 101 | 100400.00 |
| 7 | 101 | 101 | 10000.00 |
| 400100 | 102 | 101 | 1000.00 |
| 400101 | 102 | 101 | 1000.00 |
| 400200 | 102 | 101 | 1000.00 |
| 400201 | 102 | 101 | 1000.00 |
+--------+------------+-------------+-----------+
11 rows in set (0.07 sec)
- 执行插入数据
SQL
,如下:
insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
- 可看到运行结果,插入成功,如下:
mysql> insert into orders(id,order_type,customer_id,amount) values(8,101,101,10000);
Query OK, 1 row affected (0.01 sec)
mysql> select \* from orders;
+--------+------------+-------------+-----------+
| id | order_type | customer_id | amount |
+--------+------------+-------------+-----------+
| 1 | 101 | 100 | 100100.00 |
| 2 | 101 | 100 | 100300.00 |
| 6 | 102 | 100 | 100020.00 |
| 3 | 101 | 101 | 120000.00 |
| 4 | 101 | 101 | 103000.00 |
| 5 | 102 | 101 | 100400.00 |
| 7 | 101 | 101 | 10000.00 |
| 8 | 101 | 101 | 10000.00 |
| 400100 | 102 | 101 | 1000.00 |
| 400101 | 102 | 101 | 1000.00 |
| 400200 | 102 | 101 | 1000.00 |
| 400201 | 102 | 101 | 1000.00 |
+--------+------------+-------------+-----------+
12 rows in set (0.00 sec)
二、🚧SQL 拦截
firewall
标签用来定义防火墙;firewall
下 whitehost
标签用来定义 IP
白名单 ,blacklist
用来定义SQL
黑名单。
2.1、白名单
可以通过设置白名单,实现某主机某用户可以访问 Mycat
,而其他主机用户禁止访问。
设置白名单步骤如下:
- 修改
server.xml
配置文件firewall
标签。配置只有192.168.110.146
主机可以通过mycat
用户访问
<firewall>
<whitehost>
<host host="192.168.110.146" user="mycat"/>
</whitehost>
</firewall>
+ `host`:`IP`白名单
+ `user`:允许访问的用户
- 重启
Mycat
后,在192.168.110.146
主机使用mycat
用户访问,可以正常访问。如下:
# 查看IP地址
**先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7**
**深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/69990f17e68fcfe3f373b62e8188b008.png)
![img](https://img-blog.csdnimg.cn/img_convert/875eec6ca871a5309e9d61f266e5ff16.png)
![img](https://img-blog.csdnimg.cn/img_convert/4f93b95d077c9504da19468c1fffacf3.png)
![img](https://img-blog.csdnimg.cn/img_convert/962cb6142ddef9409193bfee8ddeb52c.png)
![img](https://img-blog.csdnimg.cn/img_convert/dcc71f1cd8b767175d3cde7d54d4f640.png)
![img](https://img-blog.csdnimg.cn/img_convert/fa8b695a0dd518ff46e4e740e1f8871f.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!**
**需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**
)]
[外链图片转存中...(img-Iodm5kUR-1715882457753)]
[外链图片转存中...(img-G2qh2pld-1715882457754)]
[外链图片转存中...(img-IilZGCsc-1715882457754)]
[外链图片转存中...(img-fO1WuUlw-1715882457755)]
[外链图片转存中...(img-ovqwt0mO-1715882457755)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!**
**需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**