2016-09-25 170 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