MyCAT上新增一個(gè)庫及MyCAT報(bào)錯(cuò)1184的問題及解決
背景介紹
前兩天因業(yè)務(wù)需要,需在現(xiàn)有的一套MyCAT下新增一個(gè)業(yè)務(wù)系統(tǒng)節(jié)點(diǎn),已知當(dāng)前MyCAT上有庫aaa,bbb,ccc,現(xiàn)要新增庫iris,以便在mycat-admin上進(jìn)行跨庫查詢業(yè)務(wù)。
步驟一
第一步,準(zhǔn)備一臺(tái)服務(wù)器,安裝好新業(yè)務(wù)需要的數(shù)據(jù)庫服務(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“,是自定義的邏輯庫的名字,也就是在mycat上查詢的時(shí)候,顯示出來的庫名,可以跟數(shù)據(jù)庫節(jié)點(diǎn)里”create database iris“這里的db名不一樣,create的db也就是圖二的dataNode的庫名。
②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,保持一致即可,有的情況是分庫表、有多個(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可以訪問節(jié)點(diǎn)服務(wù)器的時(shí)候,新建用戶mcyat,密碼為12345 。
④修改文件server.xml,如下:
邏輯庫aaa,bbb,ccc是原來mycat中已存在的庫,iris為新增,直接添加在其后即可。
同時(shí)增加了如下內(nèi)容:
表示額外新增兩個(gè)mycat用戶,用于從mycat服務(wù)器訪問iris庫時(shí)權(quán)限分配,一個(gè)只讀用戶(readOnly),一個(gè)是可讀寫。
不添加這段,也可以用上面mycatadmin和之前授權(quán)的mycat用戶訪問數(shù)據(jù)庫iris。
步驟二
重啟mycat服務(wù),或者relaod MyCAT配置文件
這四個(gè)地方確保正確修改后,就可以在管理端口下 reload mycat的配置文件,或者重啟服務(wù)。
重新登錄mycat,就可以看到新增的庫了。
問題
MyCAT重啟后,可以正??吹綆靑ris與aaa,bbb等庫一起,但是無法訪問,報(bào)錯(cuò)1184.
mycat重啟后,正常看到新增的庫iris了,但是需要進(jìn)行查詢時(shí),發(fā)現(xiàn)報(bào)錯(cuò)如下:” 1184- “
原因主要有
- ①用戶名/密碼不對(duì)
- ②授權(quán)不對(duì)
- ③實(shí)際的庫名和datanode不匹配
解決辦法
- 問題一:
- 可嘗試重新在節(jié)點(diǎn)db進(jìn)行授權(quán),確保密碼正確,再試一次連接訪問:
- 問題二:
- show grants查看實(shí)際授權(quán)情況,或者直接重新授權(quán) all privileges確認(rèn)訪問狀態(tài);
- 問題三:
- 再一次詳細(xì)檢查各個(gè)修改的配置內(nèi)容,
如、這里的database,是否與 在1.1.1.56服務(wù)器上數(shù)據(jù)庫上創(chuàng)建的db名一樣。
下圖這里的database名稱,是節(jié)點(diǎn)服務(wù)器上數(shù)據(jù)庫里面實(shí)際的數(shù)據(jù)庫名稱:
其次,檢查用戶標(biāo)簽中的庫名
下圖中的庫名是 mycat上邏輯庫的名稱,不是實(shí)際 create 的db的名字。
也就是下圖中的schema
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql自動(dòng)定時(shí)備份數(shù)據(jù)庫的最佳方法(windows服務(wù)器)
網(wǎng)上有很多關(guān)于window下Mysql自動(dòng)備份的方法,可是真的能用的也沒有幾個(gè),有些說的還非常的復(fù)雜,難以操作,這里腳本之家小編為大家分享與整理了幾個(gè)軟件方便大家使用2016-11-11MySQL 基于時(shí)間點(diǎn)的快速恢復(fù)方案
這篇文章主要介紹了MySQL 基于時(shí)間點(diǎn)的快速恢復(fù)方案,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下2020-11-11SQL SERVER 2005 最小安裝經(jīng)驗(yàn)
很久以前有個(gè)疑問 安裝SQL SERVER 2005后為什么會(huì)把VS2005給裝上了,當(dāng)時(shí)很郁悶,試想是不是在哪個(gè)環(huán)節(jié)把VS2005組件勾上的?2011-02-02mysql 行轉(zhuǎn)列和列轉(zhuǎn)行實(shí)例詳解
這篇文章主要介紹了mysql 行轉(zhuǎn)列和列轉(zhuǎn)行實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03如何將Excel文件導(dǎo)入MySQL數(shù)據(jù)庫
這篇文章主要為大家詳細(xì)介紹了Excel文件導(dǎo)入MySQL數(shù)據(jù)庫的具體方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07