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

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

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

這里的”iris“,是自定義的邏輯庫的名字,也就是在mycat上查詢的時候,顯示出來的庫名,可以跟數(shù)據(jù)庫節(jié)點里”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,保持一致即可,有的情況是分庫表、有多個節(jié)點,每個節(jié)點上的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對應(yīng)步驟②中datahost的名稱;
writeHost host="iris-m1”,自定義的主機名。
在節(jié)點db iris中授權(quán)mycat可以訪問節(jié)點服務(wù)器的時候,新建用戶mcyat,密碼為12345 。
④修改文件server.xml,如下:

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

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

問題
MyCAT重啟后,可以正??吹綆靑ris與aaa,bbb等庫一起,但是無法訪問,報錯1184.
mycat重啟后,正??吹叫略龅膸靑ris了,但是需要進行查詢時,發(fā)現(xiàn)報錯如下:” 1184- “

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

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

其次,檢查用戶標簽中的庫名
下圖中的庫名是 mycat上邏輯庫的名稱,不是實際 create 的db的名字。

也就是下圖中的schema

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
解決出現(xiàn)secure_file_priv null的問題
這篇文章主要介紹了解決出現(xiàn)secure_file_priv null的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
MySql使用存儲過程進行單表數(shù)據(jù)遷移的實現(xiàn)
近期在進行業(yè)務(wù)解耦,對冗余在一起切又屬于不同業(yè)務(wù)的代碼進行分離,同時也將數(shù)據(jù)庫進行分離存儲,那么這時候就涉及到多個表的數(shù)據(jù)要進行遷移,本文就來介紹一下MySql使用存儲過程進行單表數(shù)據(jù)遷移,感興趣的可以了解一下2023-11-11

