需要使用node.js访问mysql数据库的帮助

我试图运行一个简单的节点示例来访问一个MySQL数据库,并得到以下错误 – 错误:ER_ACCESS_DENIED_ERROR:访问被拒绝用户'root'@ubuntu.local'(使用密码:是)

var mysql = require('mysql'); var connection = mysql.createConnection({ host : '192.168.0.12', user : 'root', password : 'password', database : 'app' }); connection.connect(); connection.query('SELECT * from users', function(err, rows, fields) { if (err) throw err; console.log('The solution is: ', rows[0]); }); connection.end(); 

以上是使用node.js.访问mysql的代码。关于我可能做错了什么,提前致谢。

我有一个类似的问题,我得到了同样的错误。

我的答案最终是因为我正在使用不同的端口。 默认情况下,mysql的端口是3306,但是我使用的是MAMP,其中的MySQL服务器端口被指定为8889.只要我添加一个端口定义到我的数据库连接,就没事了:

 var connection = mysql.createConnection({ port: 8889, user: 'root', password : 'password', database : 'my_database' }); 

注意:这是Mac使用MAMP,没有尝试过在Ubuntu或Windows。

我得到了完全相同的问题。 我无法通过nodejs中的mysql模块进行连接,但能够通过terminal中的mysql客户端进行连接(mysql -u root -p1111 -h localhost mydb)

事实certificate,mysql模块将“localhost”转换为127.0.0.1。 这不会通过(mysql -u root -p1111 -h 127.0.0.1 mydb)工作。 见问题734

所以我不得不在MySQL中为127.0.0.1设置密码,并解决了这个问题。

说明

通过控制台连接到mysql:

 mysql -u root -p mysql 

和运行

 SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('Add-Your_password-here'); 

资源

我已经在这个问题很长一段时间了,在我所做的所有论坛中,一个简单的解决scheme可以解决我的问题。 我的密码有一些特殊的字符。 我把它变成了一个简单的,比如“onlyletters”,它完美的工作。 可能是在nodejs mysql模块中的编码问题,我可以…希望这会帮助你们中的一些人…

我有一个类似的问题,我的nodejs项目。我使用knex.js的querybuilder和它的configuration。

当主机值是127.0.0.1 ,当我更改为127.0.0.1到本地主机时,会发生此问题,问题已消失。

 var knex = require('knex')({ client: 'mysql', connection: { **host: 'localhost',** user: 'userNew', password: 'password', database: 'appDb' } }); 

其实解决scheme比你想象的要容易得多。 将主机更改为数据库连接的127.0.0.1。