无法连接从节点Js(在主机)到MySql容器

我在Node中很新,我正在尝试一些书的例子。

当我尝试从NodeJS连接到一个Mysql容器时,我得到这个错误:

Access denied for user 'root'@'172.17.0.1' 

MySql数据库位于使用此命令创build的Docker容器中:

 > docker run --detach --name=test-mysql -p 3306:3306 --env="MYSQL_ROOT_PASSWORD=root" mysql 

这是我的节点程序的代码

 'use strict'; var mysql = require('mysql'); var connection = mysql.createConnection({ host: '127.0.0.1', user: 'root', password: 'root' }); connection.query( 'SELECT "foo" AS first_field, "bar" AS second_field', function(err, results, fields) { if (err){ console.log(err); }else{ console.log(results); } connection.end(); } ); 

而且我可以使用shell从shell连接到mysql

 >mysql -u root -h 127.0.0.1 -p 

另外我可以使用-h 172.17.0.2和-h 172.17.0.1

如果我在Mysql中检查我的用户@主机

 mysql> select user(); +-----------------+ | user() | +-----------------+ | root@172.17.0.1 | +-----------------+ 1 row in set (0.00 sec) mysql> show grants for root; +-------------------------------------------------------------+ | Grants for root@% | +-------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION | +-------------------------------------------------------------+ 1 row in set (0.00 sec) 

所以不知何故,节点连接到MySql时遇到了麻烦,但一切似乎没问题…

谢谢!!

注意:解决! 升级mysql模块的包版本修复了这个问题。 以前的版本是“〜2.0.0”

我的package.json:

 { "devDependencies": { "jasmine-node": "", "mysql": "~2.1.x" } }