MyCAT上新增一个库及MyCAT报错1184的问题及解决

 更新时间:2023年11月07日 09:43:09   作者:世樹  
这篇文章主要介绍了MyCAT上新增一个库及MyCAT报错1184的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

背景介绍

前两天因业务需要,需在现有的一套MyCAT下新增一个业务系统节点,已知当前MyCAT上有库aaa,bbb,ccc,现要新增库iris,以便在mycat-admin上进行跨库查询业务。

步骤一 

第一步,准备一台服务器,安装好新业务需要的数据库服务,新建一个db。

建好后,登录到db里,如下:

我的新业务所在服务器ip是 1.1.1.56, db是 iris :

第二步,在mycat服务器上conf目录上,修改配置文件内容,修改对象如下:

要把这个服务器加入到Mycat节点中,需要修改的地方有四个:

①schema.xml文件中,新增<schema>…</schema>内容

<schema name="iris" checkSQLschema="false" sqlMaxLimit="5000">

这里的”iris“,是自定义的逻辑库的名字,也就是在mycat上查询的时候,显示出来的库名,可以跟数据库节点里”create database iris“这里的db名不一样,create的db也就是图二的dataNode的库名。

②schema.xml文件中,新增<dataNode … />内容

<!--  iris_dataNode -->

  <dataNode name="iris_dn1" dataHost="iris_Host" database="iris" />

name是自定义的名称,datahost也自定义,只要下面的内容中保持一致就可以。

database=“iris",指的就是”create database iris“这里的db,保持一致即可,有的情况是分库表、有多个节点,每个节点上的db可能名字分别是iris_db1、iris_db2……iris_dbn,那么这里就分别是database=iris_db1、iris_db2。

③schema.xml文件中,新增<dataHost>……</dataHost>内容

<!--  iris_dataHost -->

    <dataHost name="iris_Host" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native">

        <heartbeat>select user()</heartbeat>

        <writeHost host="iris-m1" url=“1.1.1.56:3307" user="mycat" password="123456">

            </writeHost>

  </dataHost>

上面dataHost name="iris_Host"的iris_host对应步骤②中datahost的名称;

writeHost host="iris-m1”,自定义的主机名。

在节点db  iris中授权mycat可以访问节点服务器的时候,新建用户mcyat,密码为12345 。

④修改文件server.xml,如下:

逻辑库aaa,bbb,ccc是原来mycat中已存在的库,iris为新增,直接添加在其后即可。

同时增加了如下内容:

表示额外新增两个mycat用户,用于从mycat服务器访问iris库时权限分配,一个只读用户(readOnly),一个是可读写。

不添加这段,也可以用上面mycatadmin和之前授权的mycat用户访问数据库iris。

步骤二

重启mycat服务,或者relaod MyCAT配置文件

这四个地方确保正确修改后,就可以在管理端口下 reload mycat的配置文件,或者重启服务。

重新登录mycat,就可以看到新增的库了。

问题

MyCAT重启后,可以正常看到库iris与aaa,bbb等库一起,但是无法访问,报错1184.

mycat重启后,正常看到新增的库iris了,但是需要进行查询时,发现报错如下:” 1184- “

原因主要有

  • ①用户名/密码不对
  • ②授权不对
  • ③实际的库名和datanode不匹配

解决办法

  • 问题一:
  • 可尝试重新在节点db进行授权,确保密码正确,再试一次连接访问:
  • 问题二:
  • show grants查看实际授权情况,或者直接重新授权 all privileges确认访问状态;
  • 问题三:
  • 再一次详细检查各个修改的配置内容,

如、这里的database,是否与 在1.1.1.56服务器上数据库上创建的db名一样。

下图这里的database名称,是节点服务器上数据库里面实际的数据库名称:

其次,检查用户标签中的库名

下图中的库名是 mycat上逻辑库的名称,不是实际 create 的db的名字。

也就是下图中的schema

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

最新评论