2016-09-25 178 views
0

我試圖連接到我的域名上的數據庫。我創建了一個名爲public_guests的用戶可以訪問這個數據庫。用戶訪問被拒絕(NodeJS和MySQL)

我正在使用NodeJS創建連接,但出現以下錯誤。

ER_ACCESS_DENIED_ERROR: Access denied for user

其次是我的IP地址錯誤等

這裏是我的代碼:

mysql = require("mysql"); 

var connection = mysql.createConnection({ 
    host: "humadshah.com", 
    username: "public_guests", 
    password:"hello", 
    databse:"my_quotes" 
}); 

connection.connect(function(error){ 
    if(error){ 
     console.log("Couldn't connect :( Error: " + error); 
    } else { 
     console.log("Connected successfully~!"); 
    }  
}); 

我已經從未之前使用的數據庫,所以我很期待這個在某個地方是一個非常愚蠢的錯誤。

+1

我給你買的人喝啤酒,一個小時 – Drew

+1

你的代碼是無關緊要下解決了這個英寸您的密碼錯誤,您的用戶不允許使用該IP或其他內容。另外,您的MySQL主機可以通過**整個世界**進行連接。這不是很好的做法。雖然您確實需要正確的憑證才能進入,但仍有可能在一天內發現新的MySQL漏洞。除非必須,否則不要這麼廣泛地開放它。最後,如果這是你的第一個數據庫,我可以推薦PostgreSQL嗎? Postgres的最新版本支持文檔樣式存儲以及列表,並且具有許多其他很好的功能。 – Brad

+0

@Drew看起來他們正在使用GoDaddy。 GoDaddy將默認密碼設置爲隨機的,因此可能需要一個多小時。 ;-) – Brad

回答

2

我想,這不是Node.js的問題。

它的權限問題,其用戶在特定的IP地址, 和錯誤消息指出:

Access denied for user @some IP

So try to give your root permission for IP where your Node.js instance is running port xxx.xx.xx.xx .

+0

有沒有辦法讓所有的IP都可以?我想要這個數據庫被任何人從任何地方訪問 –

+0

請看看這裏http://stackoverflow.com/questions/8348506/grant-remote-access-of-mysql-database-from-any-ip-address – abdulbarik

+0

@ HumanCyborgRelations是的,這是可能的......這真的是你想要的嗎?使用'user @%'。 – Brad

0

是的,你是對的,你已經做出了愚蠢的錯誤。除了設置參數mysql.createConnection()之外,你做得很好。你需要使用如下user而非username

var mysql = require("mysql"); 

var connection = mysql.createConnection({ 
    host: "humadshah.com", 
    user: "public_guests", 
    password:"hello", 
    databse:"my_quotes" 
}); 

connection.connect(function(error){ 
    if(error){ 
     console.log("Couldn't connect :( Error: " + error); 
    } else { 
     console.log("Connected successfully~!"); 
    }  
}); 

您可能會看到文檔https://github.com/mysqljs/mysql#introduction