美好的一天!
我正在尝试使用Node JS连接到MySQL数据库。我将使用mysql,并将其包含在我的文件中。当我运行代码时,我什么也没得到。我确实在脚本末尾通过控制台记录了连接,这为我提供了有效的连接模型。我只是似乎从来没有达到.connect内的功能,也没有查询或ping。
当我连接到本地主机(运行Wamp服务器)时,连接成功,并且检索了一些控制台日志。我尝试连接到第二个外部数据库,给我同样的错误。
我收到的错误:
ETIMEDOUT。在Connection_handleConnectTimeout。握手致命致命时,protocol.js中出现错误。 (我省略了一些文字)。
我安装了最新的mysql模块。
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'MY_HOST_IP',
database: 'MY_HOST_DB',
user: 'MY_HOST_USR',
password: 'MY_PW'
});
connection.connect(function (err) {
console.log('conecting');
if (err) {
console.error('Error connecting: ' + err.stack);
}
console.log('Connected as id ' + connection.threadId);
});
connection.query('SELECT * from accounts', function (error, results, fields) {
if (error) console.log(error);
console.log('account ', results[0]);
});
connection.ping(function (error) { console.log('pingerror'); });
以上代码在连接到两个外部托管数据库之一(使用其IP地址)时超时。这些数据库的主机说设置没有问题。 我尝试从127.0.0.1:22005连接到数据库进行连接,也许存在问题? 当我将上述代码放入一个独立的JS文件中并在命令行中与node一起运行时,它会连接。
答案 0 :(得分:0)
您需要授予对所有/特定IP的所有特权,如下所示:
//下面的查询创建的用户没有密码,要设置不同的密码,请检查:http://knowmysql.blogspot.com/2013/09/mysql-grant-password-error-error-1372.html
使用''mysql_native_password创建用户'root'@'%'的身份'';
//添加特权
在上授予所有特权。要'root'@'%';
答案 1 :(得分:0)
默认情况下,Node MySQL模块将连接到端口3306。如果要连接到自定义端口(例如22005),则需要通过将port: 22005
添加到要传递给mysql的对象中来进行指定.createConnection()。您还应确保从网络级别运行节点实例的主机可以访问MY_HOST_IP上的该端口。