mysql - NodeJS Mysql 模块在远程数据库上抛出 ETIMEDOUT 错误

标签 mysql node.js

美好的一天!

我正在尝试使用 Node JS 连接到 MySQL 数据库。我 npm i'd mysql 并将其包含在我的文件之上。当我运行我的代码时,我什么也得不到。我确实在脚本末尾记录了连接,这给了我一个有效的连接模型作为返回。我似乎从来没有达到 .connect 中的功能,也没有达到查询或 ping。

当我连接到本地主机(运行 Wamp 服务器)时,连接成功并且我检索了一些控制台日志。我尝试连接到第二个外部数据库,但出现了同样的错误。

我收到的错误:

超时。在 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 运行它时,它会连接。

最佳答案

您需要授予所有/特定 I.P 的所有权限,如下所示:

//下面的查询创建没有密码的用户,设置不同的密码检查这个:http://knowmysql.blogspot.com/2013/09/mysql-grant-password-error-error-1372.html

创建用户 'root'@'%' 使用 '' 通过 mysql_native_password 识别;

//添加权限

授予 上的所有权限。 给 'root'@'%';

关于mysql - NodeJS Mysql 模块在远程数据库上抛出 ETIMEDOUT 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54286640/

相关文章:

php - 根据条件运行两个不同的 SELECT 查询之一

php - 通过 CMS 在 codeIgniter 中创建动态 Controller

mysql - 如何在 MySQL 的多列唯一约束中将时间跨度指定为键?

node.js - 不支持查询关键条件: Already have a Hash and a Range Key

java - Apache cxf java-first 和 SOAP 模块 npm

c# - Godaddy .net 网站托管问题 - 没有此类主机已知错误

mysql - 为什么 MySQL Workbench 在 n :m relation? 上创建两个索引

node.js - 无法使用npm安装oracle包

node.js - 通过 db.collection.count() 检查 MongoDb 数据库是否为空 - 不起作用

javascript - 如何从 Node.js 中的 URL 获取