我有一個安裝並運行MariaDB的MAC。我有兩個安裝的應用程序,「Sequel Pro」,運行在MAC上,本地運行,我可以連接到數據庫。我也有HeidiSQL在wine下運行,我也可以連接並瀏覽數據庫。Mac OSX上的MariaDB和node.js
我也安裝節點,但是當我嘗試連接到數據庫中,我無法連接到數據庫中,我得到的消息是:
連接ECONNREFUSED然後我的系統的IP地址,後跟端口3306
這看起來像一個權限問題,但我對MAC很新,不知道如何解決問題。運行在node.js中的腳本可以在我的Windows系統上運行。
我知道用戶存在且有效,它與我使用SQL應用程序進行連接時相同。
MAC OSX正在運行最新的os x sierra,mariadb是版本15.1發行版10.1.17,用於osx10.12 x64。節點是4.6.0版本
我的連接步驟:即當節點開始得到系統的IP進行
function mariaDBconnectPrimtive(intIdx, cbRoutine, objParams) {
try{
if (!(mysql && mysql.createPool)) {
throw("Cannot create mysql pool!");
}
var pool;
if (intIdx == 1) {
pool = mysqlBusDevPool;
} else {
pool = mysqlPool;
}
if (pool == undefined) {
console.log("strServerHost: " + strServerHost);
pool = mysql.createPool({host:strServerHost
,port:"3306"
,database:"dbname"
,user:"usrname"
,password:"password"
,timezone:"utc"
,multipleStatements:true
,max:1000
,min:1
,idleTimeoutMillis:defs.QUERY_TIMEOUT});
}
if (pool && pool.getConnection) {
pool.getConnection(function(errsts, conn) {
var resp = {};
if (errsts) {
resp['error'] = errsts;
eh.msg({file:strThisFile
,method:"mariaDBconnectPrimtive"
,ex:errsts});
return;
}
resp['state'] = "connected";
if (cbRoutine) {
cbRoutine(conn, resp, objParams);
if (conn != undefined) {
conn.release();
}
}
});
}
if (intIdx == 1) {
mysqlBusDevPool = pool;
} else {
mysqlPool = pool;
}
} catch(ex) {
eh.msg({file:strThisFile
,method:"mariaDBconnectPrimtive"
,ex:ex});
}
};
代碼:
os = require("os");
var objNIs = os.networkInterfaces();
for(var strName in objNIs) {
var aryIFace = objNIs[strName];
for(var i=0; i<aryIFace.length; i++) {
var objNI = aryIFace[i];
if (objNI['internal'] == false && "IPv4".match(objNI['family'])) {
strServerHost = objNI['address'];
break;
}
}
if (strServerHost !== undefined) {
break;
}
}
它似乎有什麼東西做的返回的IP地址,我把服務器地址硬編碼爲「本地主機」,它可以工作,但是分配給系統的I/P有什麼問題?
我在mariadb中創建了一個有權訪問原始I/P的用戶,但這沒有幫助。
檢查您的防火牆和macOs的安全設置。 –
防火牆已關閉,這是默認設置,爲什麼桌面應用程序能夠連接終端而不是節點? – SPlatten
你可以發佈你的連接代碼....如果你通過像localhost或127.0.01之類的東西更改ip,那該怎麼辦 – Hackerman