MyCAT上新增一個(gè)庫(kù)及MyCAT報(bào)錯(cuò)1184的問(wèn)題及解決
背景介紹
前兩天因業(yè)務(wù)需要,需在現(xiàn)有的一套MyCAT下新增一個(gè)業(yè)務(wù)系統(tǒng)節(jié)點(diǎn),已知當(dāng)前MyCAT上有庫(kù)aaa,bbb,ccc,現(xiàn)要新增庫(kù)iris,以便在mycat-admin上進(jìn)行跨庫(kù)查詢業(yè)務(wù)。
步驟一
第一步,準(zhǔn)備一臺(tái)服務(wù)器,安裝好新業(yè)務(wù)需要的數(shù)據(jù)庫(kù)服務(wù),新建一個(gè)db。
建好后,登錄到db里,如下:
我的新業(yè)務(wù)所在服務(wù)器ip是 1.1.1.56, db是 iris :

第二步,在mycat服務(wù)器上conf目錄上,修改配置文件內(nèi)容,修改對(duì)象如下:

要把這個(gè)服務(wù)器加入到Mycat節(jié)點(diǎn)中,需要修改的地方有四個(gè):
①schema.xml文件中,新增<schema>…</schema>內(nèi)容
<schema name="iris" checkSQLschema="false" sqlMaxLimit="5000">

這里的”iris“,是自定義的邏輯庫(kù)的名字,也就是在mycat上查詢的時(shí)候,顯示出來(lái)的庫(kù)名,可以跟數(shù)據(jù)庫(kù)節(jié)點(diǎn)里”create database iris“這里的db名不一樣,create的db也就是圖二的dataNode的庫(kù)名。
②schema.xml文件中,新增<dataNode … />內(nèi)容
<!-- iris_dataNode --> <dataNode name="iris_dn1" dataHost="iris_Host" database="iris" />
name是自定義的名稱,datahost也自定義,只要下面的內(nèi)容中保持一致就可以。
database=“iris",指的就是”create database iris“這里的db,保持一致即可,有的情況是分庫(kù)表、有多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)上的db可能名字分別是iris_db1、iris_db2……iris_dbn,那么這里就分別是database=iris_db1、iris_db2。
③schema.xml文件中,新增<dataHost>……</dataHost>內(nèi)容
<!-- 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對(duì)應(yīng)步驟②中datahost的名稱;
writeHost host="iris-m1”,自定義的主機(jī)名。
在節(jié)點(diǎn)db iris中授權(quán)mycat可以訪問(wèn)節(jié)點(diǎn)服務(wù)器的時(shí)候,新建用戶mcyat,密碼為12345 。
④修改文件server.xml,如下:

邏輯庫(kù)aaa,bbb,ccc是原來(lái)mycat中已存在的庫(kù),iris為新增,直接添加在其后即可。
同時(shí)增加了如下內(nèi)容:

表示額外新增兩個(gè)mycat用戶,用于從mycat服務(wù)器訪問(wèn)iris庫(kù)時(shí)權(quán)限分配,一個(gè)只讀用戶(readOnly),一個(gè)是可讀寫。
不添加這段,也可以用上面mycatadmin和之前授權(quán)的mycat用戶訪問(wèn)數(shù)據(jù)庫(kù)iris。
步驟二
重啟mycat服務(wù),或者relaod MyCAT配置文件
這四個(gè)地方確保正確修改后,就可以在管理端口下 reload mycat的配置文件,或者重啟服務(wù)。
重新登錄mycat,就可以看到新增的庫(kù)了。

問(wèn)題
MyCAT重啟后,可以正??吹綆?kù)iris與aaa,bbb等庫(kù)一起,但是無(wú)法訪問(wèn),報(bào)錯(cuò)1184.
mycat重啟后,正常看到新增的庫(kù)iris了,但是需要進(jìn)行查詢時(shí),發(fā)現(xiàn)報(bào)錯(cuò)如下:” 1184- “

原因主要有
- ①用戶名/密碼不對(duì)
- ②授權(quán)不對(duì)
- ③實(shí)際的庫(kù)名和datanode不匹配
解決辦法
- 問(wèn)題一:
- 可嘗試重新在節(jié)點(diǎn)db進(jìn)行授權(quán),確保密碼正確,再試一次連接訪問(wèn):
- 問(wèn)題二:
- show grants查看實(shí)際授權(quán)情況,或者直接重新授權(quán) all privileges確認(rèn)訪問(wèn)狀態(tài);
- 問(wèn)題三:
- 再一次詳細(xì)檢查各個(gè)修改的配置內(nèi)容,
如、這里的database,是否與 在1.1.1.56服務(wù)器上數(shù)據(jù)庫(kù)上創(chuàng)建的db名一樣。

下圖這里的database名稱,是節(jié)點(diǎn)服務(wù)器上數(shù)據(jù)庫(kù)里面實(shí)際的數(shù)據(jù)庫(kù)名稱:

其次,檢查用戶標(biāo)簽中的庫(kù)名
下圖中的庫(kù)名是 mycat上邏輯庫(kù)的名稱,不是實(shí)際 create 的db的名字。

也就是下圖中的schema

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql自動(dòng)定時(shí)備份數(shù)據(jù)庫(kù)的最佳方法(windows服務(wù)器)
網(wǎng)上有很多關(guān)于window下Mysql自動(dòng)備份的方法,可是真的能用的也沒(méi)有幾個(gè),有些說(shuō)的還非常的復(fù)雜,難以操作,這里腳本之家小編為大家分享與整理了幾個(gè)軟件方便大家使用2016-11-11
MySQL 基于時(shí)間點(diǎn)的快速恢復(fù)方案
這篇文章主要介紹了MySQL 基于時(shí)間點(diǎn)的快速恢復(fù)方案,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下2020-11-11
MySQL擴(kuò)展VARCHAR長(zhǎng)度遭遇問(wèn)題匯總分析
這篇文章主要為大家介紹了MySQL擴(kuò)展VARCHAR長(zhǎng)度遭遇問(wèn)題匯總分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-02-02
SQL SERVER 2005 最小安裝經(jīng)驗(yàn)
很久以前有個(gè)疑問(wèn) 安裝SQL SERVER 2005后為什么會(huì)把VS2005給裝上了,當(dāng)時(shí)很郁悶,試想是不是在哪個(gè)環(huán)節(jié)把VS2005組件勾上的?2011-02-02
mysql 行轉(zhuǎn)列和列轉(zhuǎn)行實(shí)例詳解
這篇文章主要介紹了mysql 行轉(zhuǎn)列和列轉(zhuǎn)行實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03
如何將Excel文件導(dǎo)入MySQL數(shù)據(jù)庫(kù)
這篇文章主要為大家詳細(xì)介紹了Excel文件導(dǎo)入MySQL數(shù)據(jù)庫(kù)的具體方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07

