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