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

本文详细介绍如何在MyCAT中新增数据库节点的过程,包括配置文件修改、服务器授权及重启步骤,并解决常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景介绍:

前两天因业务需要,需在现有的一套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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值