无法从Node Js(在主机中)连接到MySql容器

时间:2016-10-16 09:05:53

标签: mysql node.js docker

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

当我尝试从NodeJS连接到Mysql容器时,我收到此错误:

Access denied for user 'root'@'172.17.0.1'

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

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

这是我的Node程序中的代码

'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连接到mysql
>mysql -u root -h 127.0.0.1 -p

我也可以使用-h 172.17.0.2和-h 172.17.0.1

如果我在Mysql中检查我的user @ host

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"
    }
}

0 个答案:

没有答案