MyCat入门+JAVA程序连接

  • 连接mycat时,将原先连接mysql的端口和数据库改为mycat的端口8066,和mycat的逻辑数据库TESTDB,用户名和密码为server.xml表里设定的user。
[java]  view plain  copy
  1. jdbc.url=jdbc:mysql://127.0.0.1:8066/TESTDB?characterEncoding=utf-8  
  2. jdbc.driver=com.mysql.jdbc.Driver  
  3. jdbc.username=user  
  4. jdbc.password=user  

本人遇到一件特郁闷的事,配置看着是好的就是报Access denied for user'root';解决了一下午,什么

mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY '123456';
mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by '123456'; 
  • 1

这些方法都用上了,还是不行。但是在本机cmd命令就可以;第二天终于看出了为什么。

请看图:

账号密码带了空格。。。。。无语死。mybatis居然没有trim。。。。。

另:

如果数据库为5.8,pom就要改为:最新的,而且driver:com.mysql.cj.jdbc.Driver;如果是旧版本就不需要。

确保新旧数据库与connect.jar的对应。不然会报CLIENT_PLUGIN_AUTH is required


  • server.xml:设置连接的用户,例如连接mysql数据库时所需的用户名、密码和连接哪个数据库;通过该xml可以配置连接用户的权限。在实验中,测试了user用户,由于设置了只读,所以在插入数据时抛了异常。
[java]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <!DOCTYPE mycat:server SYSTEM "server.dtd">    
  3. <mycat:server xmlns:mycat="http://io.mycat/">    
  4.         <system>    
  5.                 <property name="defaultSqlParser">druidparser</property>    
  6.                 <property name="mutiNodeLimitType">1</property>    
  7.                 <property name="serverPort">8066</property> #连接端口,替换连接mysql时的3306端口  
  8.                 <property name="managerPort">9066</property>     
  9.         </system>    
  10.         <!-- 任意设置登陆 mycat 的用户名,密码,数据库  -->    
  11.         <user name="test">   
  12.                 <property name="password">test</property>    
  13.                 <property name="schemas">TESTDB</property>  #该用户能够连接的逻辑数据库  
  14.         </user>    
  15.   
  16.         <user name="user">    
  17.                 <property name="password">user</property>    
  18.                 <property name="schemas">TESTDB</property>    
  19.                 <property name="readOnly">true</property>    
  20.         </user>    
  21.         <!--     
  22.         <quarantine>     
  23.            <whitehost>    
  24.               <host host="127.0.0.1" user="mycat"/>    
  25.               <host host="127.0.0.2" user="mycat"/>    
  26.            </whitehost>    
  27.        <blacklist check="false"></blacklist>    
  28.         </quarantine>    
  29.         -->    
  30. </mycat:server>    

  • schema.xml:设置TESTDB逻辑数据库对应哪些表,哪些表在哪些节点,节点的地址,
    [java]  view plain  copy
    1. <?xml version="1.0"?>    
    2. <!DOCTYPE mycat:schema SYSTEM "schema.dtd">    
    3. <mycat:schema xmlns:mycat="http://io.mycat/">    
    4.   
    5.     <!-- 设置表的存储方式.schema name="TESTDB" 与 server.xml中的 TESTDB 设置一致  -->    
    6.     <!-- 设置这个TESTDB逻辑数据库对应哪些表,item表的rule=role1是该表的分库规则,在rule.xml里设定了规则 -->  
    7.     <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">    
    8.         <table name="users" primaryKey="id"  dataNode="node_db01" />    
    9.         <table name="item" primaryKey="id" dataNode="node_db02,node_db03" rule="role1" />    
    10.     </schema>    
    11.   
    12.     <!-- 设置dataNode 对应的数据库,及 mycat 连接的地址dataHost -->    
    13.     <dataNode name="node_db01" dataHost="dataHost01" database="db01" />    
    14.     <dataNode name="node_db02" dataHost="dataHost01" database="db02" />    
    15.     <dataNode name="node_db03" dataHost="dataHost01" database="db03" />    
    16.   
    17.     <!-- mycat 逻辑主机dataHost对应的物理主机.其中也设置对应的mysql登陆信息 -->    
    18.     <dataHost name="dataHost01" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">    
    19.             <heartbeat>select user()</heartbeat>    
    20.             <writeHost host="server1" url="127.0.0.1:3306" user="root" password="root"/>    
    21.     </dataHost>    
    22. </mycat:schema>  
  • rule.xml:该路由表表明采用mod2的方式进行路由。通过下面可知是对item表的id键进行取模分表的,取模分到db02和db03,而users表直接路由到db01中。
[java]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE mycat:rule SYSTEM "rule.dtd">  
  3. <mycat:rule xmlns:mycat="http://io.mycat/">  
  4.       
  5.     <tableRule name="role1"> #创建角色,用于给哪张表分配角色  
  6.         <rule>  
  7.             <columns>id</columns>#根据id进行分割  
  8.             <algorithm>mod-long</algorithm>  
  9.         </rule>  
  10.     </tableRule>  
  11.     #分库规则,上面设定了id作为分割条件,条件为 id % 2  
  12.     <function name="mod-long" class="io.mycat.route.function.PartitionByMod">  
  13.         <!-- how many data nodes -->  
  14.         <property name="count">2</property>  
  15.     </function>  
  16. </mycat:rule>  
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值