1.權限配置
[1].user標籤
目前 Mycat 對於中間件的連接控制並沒有做太複雜的控制,目前只做了中間件邏輯庫級別的讀寫權限控制。是通過 server.xml 的 user 標籤進行配置。
#server.xml配置文件user部分 [root@host79 ~]# vim /usr/local/mycat/conf/server.xml
<user name="mycat"> <property name="password">123456</property> <property name="schemas">TESTDB</property> </user> <user name="user"> <property name="password">user</property> <property name="schemas">TESTDB</property> <property name="readOnly">true</property> </user> |
(1).配置說明
標籤屬性 |
說明 |
name |
應用連接中間件邏輯庫的用戶名 |
password |
該用戶對應的密碼 |
TESTDB |
應用當前連接的邏輯庫中所對應的邏輯表。schemas 中可以配置一個或多個 |
readOnly |
應用連接中間件邏輯庫所具有的權限。true 爲只讀,false 爲讀寫都有,默認爲 false |
(2).測試案例
#測試案例一 # 使用user用戶,權限爲只讀(readOnly:true) # 驗證是否可以查詢出數據,驗證是否可以寫入數據 #1、用user用戶登錄,運行命令如下: mysql -uuser -puser -h 192.168.188.188 -P8066 #2、切換到TESTDB數據庫,查詢orders表數據,如下: use TESTDB select * from orders; #3、可以查詢到數據,如下圖 #4、執行插入數據sql, insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000); #5、可看到運行結果,插入失敗,只有只讀權限,如下圖: |
#測試案例二 # 使用mycat用戶,權限爲可讀寫(readOnly:false) # 驗證是否可以查詢出數據,驗證是否可以寫入數據 #1、用mycat用戶登錄,運行命令如下: mysql -umycat -p123456 -h 192.168.188.188 -P8066 #2、切換到TESTDB數據庫,查詢orders表數據,如下: use TESTDB select * from orders; #3、可以查詢到數據,如下圖 #4、執行插入數據sql, insert into orders(id,order_type,customer_id,amount) values(7,101,101,10000); #5、可看到運行結果,插入成功,如下圖: |
[2].privileges 標籤
持保留,因爲privileges 打開後啓動出現
錯誤.mycat的版本信息Mycat-server-1.6-RELEASE-20161028204710-linux.tar
2.SQL攔截
firewall 標籤用來定義防火牆;firewall 下 whitehost 標籤用來定義 IP 白名單 ,blacklist 用來定義SQL 黑名單。
[1].白名單
可以通過設置白名單,實現某主機某用戶可以訪問 Mycat,而其他主機用戶禁止訪問
#設置白名單 #server.xml配置文件firewall標籤 #配置只有192.168.140.128主機可以通過mycat用戶訪問 <firewall> <whitehost> <host host="192.168.140.128" user="mycat"/> </whitehost> </firewall> |
#重啓Mycat後,192.168.140.128主機使用mycat用戶訪問 mysql -umycat -p123456 -h 192.168.140.128 -P 8066 #可以正常訪問,如下圖 ##在192.168.188.189主機用mycat用戶訪問,禁止訪問 |
#在此主機換user用戶訪問,禁止訪問 |
[2].黑名單
可以通過設置黑名單,實現 Mycat 對具體 SQL 操作的攔截,如增刪改查等操作的攔截.
#設置白名單 #server.xml配置文件firewall標籤 #配置禁止mycat用戶進行刪除操作 <blacklist check="true"> <property name="deleteAllow">false</property> </blacklist> #重啓Mycat後,192.168.140.128主機使用mycat用戶訪問 mysql -umycat -p123456 -h 192.168.188.188 -P 8066 #可以正常訪問,如下圖 |
#切換TESTDB數據庫後,執行刪除數據語句 delete from orders where id=400200; #運行後發現已禁止刪除數據,如下圖 |
可以設置的黑名單 SQL 攔截功能列表