MyCat 基礎 - 配置文件 - server

前言

本章主要整理 MyCat核心配置說明

核心配置文件說明

文件名 說明 功能
server.xml 虛擬MySQL 配置系統相關參數
配置用戶訪問權限
配置SQL防火牆及SQL攔截功能
schema.xml 數據庫配置 配置邏輯庫及邏輯表
配置邏輯表所存儲的數據節點
配置數據節點所對應的物理數據庫服務信息
rule.xml 切片規則 配置水平分片的分片規則
配置分片規則所對應的分片函數
log4j2.xml 日誌文件 配置輸出日誌的格式
配置輸出日誌的級別

核心配置 - server.xml

完整配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
    <system>
        <property name="serverPort">8066</property>
        <property name="managerPort">9066</property>
        <property name="nonePasswordLogin">0</property>
        <property name="bindIp">0.0.0.0</property>
        <property name="frontWriteQueueSize">2048</property>
        <property name="charset">utf8</property>
        <property name="txIsolation">2</property>
        <property name="processors">8</property>
        <property name="idleTimeout">1800000</property>
        <property name="sqlExecuteTimeout">300</property>
        <property name="useSqlStat">0</property>
        <property name="useGlobleTableCheck">0</property>
        <property name="sequnceHandlerType">1</property>
        <property name="defaultMaxLimit">100</property>
        <property name="maxPacketSize">104857600</property>
    </system>

    <!-- 全局SQL防火牆設置 -->
    <!--白名單可以使用通配符%或着*-->
    <!--例如<host host="127.0.0.*" user="root"/>-->
    <!--例如<host host="127.0.*" user="root"/>-->
    <!--例如<host host="127.*" user="root"/>-->
    <!--例如<host host="1*7.*" user="root"/>-->
    <!--這些配置情況下對於127.0.0.1都能以root賬戶登錄-->
    <firewall>
			<whitehost>
    		<host host="1*7.0.0.*" user="root"/>
    	</whitehost>
      <blacklist check="false">
      </blacklist>
    </firewall>

    <user name="root" defaultAccount="true">
        <property name="password">123456</property>
        <property name="schemas">book_db</property>
    </user>

    <!-- 只讀用戶 -->
    <user name="admin">
        <property name="password">123456</property>
        <property name="schemas">book_db</property>
        <property name="readOnly">true</property>
    </user>

    <!-- 訪問用戶權限配置 -->
    <user name="test">
        <property name="password">123456</property>
        <property name="schemas">book_db</property>
        <property name="readOnly">true</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>

</mycat:server>

system配置說明

屬性 說明
serverPort MyCat 服務端口
managerPort MyCat 管理端口
nonePasswordLogin 0 需要密碼登錄 (默認)
1 不需要密碼登錄(需要指定默認賬戶)
bindIp 在哪個IP上監控
frontWriteQueueSize 前端寫隊列的大小
charset 默認字符集 (前端鏈接到後端MySQL的字符集需要保持一致)
txIsolation 事務隔離級別 <下面有完整介紹>
processors MyCat的進程數量,通常等於cpu核數就好
idleTimeout 前端連接MyCat空閒超時時間 (單位:毫秒)
sqlExecuteTimeout SQL 執行超時(單位:秒)
useSqlStat 1 開啓實時統計
0 關閉
useGlobleTableCheck 1 開啓全局表一致性檢測
0 關閉
sequnceHandlerType 指定使用 Mycat 全局序列的類型. <下面有完整介紹>
defaultMaxLimit MyCat默認返回數據值的大小
maxPacketSize 運行最大包的大小

事務隔離級別 txIsolation

隔離級別
讀未提交(READ UNCOMMITTED) 1
讀已提交(READ COMMITTED) 2
可重複讀(REPEATABLE READ) - 默認 3
順序讀 (SERIALIZABLE) 4

全局序列的類型 sequnceHandlerType

描述
0 爲本地文件方式
1 爲數據庫方式
2 爲時間戳序列方式
3 爲分佈式ZKID生成器
4 爲 zk 遞增Id 方式

user配置說明

定義默認賬號,用戶名 user 密碼 123456 ,可以登錄mycat並可訪問邏輯庫 book_db

<user name="root" defaultAccount="true">
  <property name="password">123456</property>
  <property name="schemas">book_db</property>
</user>

定義只讀賬號,用戶名 admin 密碼 123456 , 可以登錄mycat並可訪問邏輯庫 book_db

<user name="admin" defaultAccount="true">
  <property name="password">123456</property>
  <property name="schemas">book_db</property>
  <property name="readOnly">true</property>
</user>

訪問用戶權限配置,限制邏輯表 TESTDB

參數 說明 事例(禁止增刪改查)
Dml insert,update,select,delete 0000
<user name="test">
  <property name="password">123456</property>
  <property name="schemas">book_db</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>

密碼加密

得到最後一行,加密串

$ cd usr/local/mycat/lib
$ java -cp Mycat-server-1.6.7.3-release.jar io.mycat.util.DecryptUtil 0:root:123456
<user name="root" defaultAccount="true">
  <property name="usingDecrypt">1</property>
   <property name="password">上面輸出的密碼</property>
		<property name="schemas">book_db,order_db</property>
</user>

重啓 mycat

mycat restart

防火牆

白名單配置

<firewall>
  <whitehost>
    <!-- ip 白名單 用戶對應的可以訪問的 ip 地址 -->
    <host user="admin" host="192.168.1.5"></host>
  </whitehost>
</firewall>

非白名單的主機登錄 MyCat

mysql -uadmin -p123456 -h192.168.1.2 -P8066
ERROR 1045 (HY000): Access denied for user 'admin' with host '192.168.1.2'

黑名單設置

  <blacklist check="true">
  <!-- 是否允許非以上基本語句的其他語句,缺省關閉,通過這個選項就能夠屏蔽 DDL。 -->
  <property name="noneBaseStatementAllow">true</property>
  <!-- 檢查 DELETE 語句是否無 where 條件,如果沒有拒絕 -->
  <property name="deleteWhereNoneCheck">true</property>
</blacklist>

測試 delete 不輸入where的情況

# 執行delete 但不輸入 where
delete from order_master;
ERROR 3012 (HY000): The statement is unsafe SQL, reject for user 'admin'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章