MyCat訪問權限配置

user 標籤:
       這個標籤主要用於定義登陸 mycat 的用戶和權限。前端

<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>
   <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>

例如上面的例子中,我定義了一個用戶:
        用戶名爲 test
        密碼也爲 test
        可訪問的 schema 也只有 TESTDB 一個。java

       若是我在 schema.xml 中定義有多個 schema,這裏這個用戶是沒法訪問其餘的 schema的。在 mysql 客戶端看來則是沒法使用 use 切換到這個其餘的數據庫。若是使用了 use 命令,則 mycat 會報出這樣的錯誤提示:python

ERROR 1044 (HY000): Access denied for user 'test' to database 'xxx'

property 標籤:
      用於具體聲明的屬性值。mysql

password屬性:
         聲明密碼sql

readOnly屬性:
        聲明限制用戶是否只是可讀; 爲 true 或 false 數據庫

schemas屬性:
        聲明用戶可訪問的 schema;修改 schemas 內的文原本控制用戶可訪問的 schema,同時訪問多個 schema 的話使用","隔開後端

<property name="schemas">TESTDB,db1,db2</property>

Benchmark屬性:
       聲明該用戶最大鏈接數;當前端的總體 connection 數達到(benchmark)基準值時,對來自該帳戶的請求開始拒絕鏈接,0 或不設表示不限制加密

<property name="benchmark">1000</property>

usingDecrypt屬性:
       聲明是否對密碼加密默認 0 否 如須要開啓配置 1,同時使用加密程序對密碼加密,
加密命令爲:
執行 mycat jar 程序:3d

java -cp Mycat-server-1.4.1-dev.jar org.opencloudb.util.DecryptUtil 0:user:password

Mycat-server-1.4.1-dev.jar 爲 mycat download 下載目錄的 jar
1:host:user:password 中 0 爲前端加密標誌code

privileges 子節點
       對用戶的 schema 及 下級的 table 進行精細化的 DML 權限控制,privileges 節點中的 check 屬性是用於標識是否開啓 DML 權限檢查, 默認 false 標識不檢查,固然 privileges 節點不配置,等同 check=false;
      因爲 Mycat 一個用戶的 schemas 屬性可配置多個 schema ,因此 privileges 的下級節點 schema 節點一樣可配置多個,對多庫多表進行細粒度的 DML 權限控制。

<user name="zhuam">
    <property name="password">111111</property>
    <property name="schemas">TESTDB,TESTDB1</property> 
    <!-- 表級權限: Table 級的 dml(curd)控制,未設置的 Table 繼承 schema 的 dml -->
    <!-- TODO: 非 CURD SQL 語句, 透明傳遞至後端 -->
    <privileges check="true">
        <schema name="TESTDB" dml="0110" >
            <table name="table01" dml="0111"></table>
            <table name="table02" dml="1111"></table>
        </schema>
        <schema name="TESTDB1" dml="0110">
            <table name="table03" dml="1110"></table>
            <table name="table04" dml="1010"></table>
        </schema>
    </privileges>
</user>
相關文章
相關標籤/搜索