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重啟后,正??吹叫略龅膸靑ris了,但是需要進(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時(shí)間戳與日期格式的相互轉(zhuǎn)換
在MySQL數(shù)據(jù)庫中,時(shí)間戳和日期格式是常用的數(shù)據(jù)類型,在MySQL中,我們可以使用函數(shù)還相互轉(zhuǎn)換時(shí)間戳和日期格式,下面我將詳細(xì)的給大家介紹如何進(jìn)行轉(zhuǎn)換,并提供相應(yīng)的代碼示例,感興趣的小伙伴跟著小編一起來看看吧2024-01-01
解決出現(xiàn)secure_file_priv null的問題
這篇文章主要介紹了解決出現(xiàn)secure_file_priv null的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03
利用SQL注入漏洞登錄后臺(tái)的實(shí)現(xiàn)方法
工作需要,得好好補(bǔ)習(xí)下關(guān)于WEB安全方面的相關(guān)知識(shí),故撰此文,權(quán)當(dāng)總結(jié),別無它意。讀這篇文章,我假設(shè)讀者有過寫SQL語句的經(jīng)歷,或者能看得懂SQL語句2012-01-01
MySql使用存儲(chǔ)過程進(jìn)行單表數(shù)據(jù)遷移的實(shí)現(xiàn)
近期在進(jìn)行業(yè)務(wù)解耦,對(duì)冗余在一起切又屬于不同業(yè)務(wù)的代碼進(jìn)行分離,同時(shí)也將數(shù)據(jù)庫進(jìn)行分離存儲(chǔ),那么這時(shí)候就涉及到多個(gè)表的數(shù)據(jù)要進(jìn)行遷移,本文就來介紹一下MySql使用存儲(chǔ)過程進(jìn)行單表數(shù)據(jù)遷移,感興趣的可以了解一下2023-11-11

