MyCat高可用集群
第一章 MyCat的安裝,實作資料讀寫分離
第二章 搭建MySQL雙主雙從服務器
第三章 資料庫垂直拆分——分庫
第四章 資料庫水平拆分——分表
第五章 基于HAProxy的MyCat高可用集群
第六章 Mycat監控——Mycat-web
第七章 Mycat安全設定
文章目錄
- MyCat高可用集群
- 前言
- 一、環境準備
- 二、權限設定
- 1、user標簽權限控制
- 2、privileges標簽權限控制
- 三、SQL攔截
- 1、白名單
- 2、黑名單
- 總結
前言
前面搭建了mycat的高可用集群中,并沒有考慮安全問題,雖然mycat并沒有mysql一樣有著豐富的安全策略,只攜帶了一些簡單的限制,但足夠應對一些簡單的業務要求,
一、環境準備
三臺CentOS7虛擬機
| 名稱 | 主機名 | IP |
|---|---|---|
| MyCat1 | centos7_1 | 192.168.80.70 |
| MySql1 | centos7_2 | 192.168.80.20 |
| MSql2 | centos7_3 | 192.168.80.30 |
二、權限設定
1、user標簽權限控制
除了mycat用戶以外,還有一個user普通用戶,
name:應用連接中間件邏輯庫的用戶名
password:該用戶對應的密碼
TESTDB:應用當前連接的邏輯庫中所對應的邏輯表,schemas中可以配置一個或多個
readOnly:應用連接中間件邏輯庫所具有的權限,true為只讀,false為讀寫都可以,默認為false
#使用user用戶登錄,可以查詢到表內資料,插入的時候就會顯示readonly錯誤,
1、mysql -uuser -puser -P8066 -h 192.168.80.70
2、use TESTDB;
3、select * from orders;
4、INSERT INTO orders(id,order_type,customer_id,amount) VALUES(111,101,100,100100);
使用mycat用戶登錄就不會有該錯誤,
2、privileges標簽權限控制
在user標簽下,privileges標簽可以對邏輯庫(schema)、表(table)進行精細化的DML權限控制,
privileges標簽下的check屬性,如為true開啟權限檢查,為false不開啟,默認為false,
由于Mycat 一個用戶的schemas 屬性可配置多個邏輯庫(schema),所以privileges 的下級節點schema節點同樣可配置多個,對多庫多表進行細粒度的DML 權限控制,
DML權限四個數字權限分別對應:增加(insert)、更新(update)、查詢(select)、洗掉(select),0表示禁止、1表示允許,
#將order表權限設定為1,orders_detail全設定為0,測驗增刪改查
#重啟mycat
./mycat console
#訪問Mycat
mysql -umycat -p123456 -P8066 -h 192.168.80.70
#切換到TESTDB
USE TESTDB;
#測驗orders表
SELECT * FROM orders;
INSERT INTO orders(id,order_type,customer_id,amount) VALUES(112,101,100,100100);
#測驗orders_detail表
SELECT * FROM orders_detail;
INSERT INTO orders_detail(id,detail,order_id) VALUES(10,‘detail1’,1);
#操作失敗,沒有dml權限,
三、SQL攔截
server.xml組態檔中的firewall標簽是用來定義防火墻;firewall下whitehost標簽用來定義IP白名單,blacklist用來定義SQL黑名單,
1、白名單
通過設定白名單,實作某主機某用戶可以訪問Mycat,而其他主機用戶禁止訪問,
#修改server.xml組態檔firewall標簽
#配置本機和M1主機可以通過mycat用戶訪問,其他用戶則不能訪問

#重啟mycat
./mycat console
#M1、M2分別訪問Mycat
mysql -umycat -p123456 -P8066 -h 192.168.80.70
#M1能正常訪問,M2被拒絕訪問


2、黑名單
通過設定黑名單,實作Mycat對具體SQL操作的攔截,如增刪改查等操作的攔截,
#property 配置項
| 配置項 | 預設值 | 描述 |
|---|---|---|
| selelctAllow | true | 是否允許執行SELECT 陳述句 |
| deleteAllow | true | 是否允許執行DELETE 陳述句 |
| updateAllow | true | 是否允許執行UPDATE 陳述句 |
| insertAllow | true | 是否允許執行INSERT 陳述句 |
| createTableAllow | true | 是否允許創建表 |
| setAllow | true | 是否允許使用SET 語法 |
| alterTableAllow | true | 是否允許執行Alter Table 陳述句 |
| dropTableAllow | true | 是否允許修改表 |
| commitAllow | true | 是否允許執行commit 操作 |
| rollbackAllow | true | 是否允許執行roll back 操作 |
#修改server.xml組態檔firewall標簽
#禁止用戶進行洗掉操作

#重啟mycat
./mycat console
#M1訪問Mycat
mysql -umycat -p123456 -P8066 -h 192.168.80.70
#切換到TESTDB
USE TESTDB;
#查詢orders表
SELECT * FROM orders;

#洗掉id=111的資料
delete from orders where id=111;
#洗掉失敗

總結
本系列Mycat文章是參照尚硅谷mycat系列視頻撰寫的,
mycat視頻鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/240496.html
標籤:其他
上一篇:Java List介面詳解






