server.xml 幾乎保存了所有mycat需要的系統配置信息,包括 mycat 用戶管理、DML權限管理等,其在代碼內直接的映射類為SystemConfig 類。
user 標簽
該標簽主要用於定義登錄 mycat的用戶和權限。例如,我定義了一個用戶,用戶名為test、密碼也為test,可訪問的schema也只有TESTDB一個,示例代碼如下:
<!-- 用戶名稱 -->
<user name="test">
<!-- 賬戶信息 -->
<!-- 用戶密碼 -->
<property name="password">test</property>
<!-- 邏輯數據庫名稱,存在多個則使用","號分隔 -->
<property name="schemas">TESTDB</property>
<!-- 只讀 -->
<property name="readOnly">true</property>
<!-- 連接服務降級的基准連接數量 -->
<property name="benchmark">11111</property>
<!-- 是否對密碼加密 -->
<property name="usingDecrypt">1</property>
<!-- 精細化DML權限控制 -->
<privileges check="false">
<schema name="TESTDB" dml="0010" showTables="custome/mysql">
<table name="tbl_user" dml="0110"></table>
<table name="tbl_dynamic" dml="1111"></table>
</schema>
</privileges>
</user>
-
相關屬性
- Benchmark:mycat 連接服務降級處理,當前端的整體 connection 數達到基准值時,對來自該賬戶的請求開始拒絕連接,0 或不設表示不限制
-
usingDecrypt:是否對密碼加密默認0 否 如需要開啟配置1,同時使用加密程序對密碼加密,加密命令為:
# java -cp Mycat-server-1.6-RELEASE.jar io.mycat.util.DecryptUtil 0:user:password
其中 Mycat-server-1.6-RELEASE.jar 位於 mycat/lib 目錄中,0:user:password,其中 0 表示 前端加密標識
privileges 標簽
對用戶的 schema 及 下級的 table 進行精細化的 DML 權限控制,privileges 節點中的 check 屬性是用於標識是否開啟 DML 權限檢查, 默認false 標識不檢查,當然 privileges 節點不配置,等同 check=false, 由於Mycat一個用戶的schemas 屬性可配置多個 schema ,所以 privileges 的下級節點 schema 節點同樣可配置多個,對多庫多表進行細粒度的DML 權限控制,在 schema 及 table 上設置 dml 字符串的規則時按照如下規則設置的,示例如下:
操作 |
DML權限示例 |
說明 |
insert,update,select,delete |
0000 |
禁止增加、更新、查詢和刪除 |
insert,update,select,delete |
0010 |
禁止增加、更新和刪除,可以查詢 |
insert,update,select,delete |
1110 |
禁止刪除,可以創建、更新和查詢 |
如果設置了 schema 的 DML,而沒有設置 table 的 DML,則自動繼承 schema 的 DML 屬性