使用节点连接到远程 mysql 数据库

Posted

技术标签:

【中文标题】使用节点连接到远程 mysql 数据库【英文标题】:connection to a remote mysql database using node 【发布时间】:2020-03-26 02:32:03 【问题描述】:

大家早上好。我想使用节点 js 建立与远程 mysql 数据库的连接。但我正面临这个错误。不知道是不是我错误指定了db的访问路径

代码

var mysql = require('mysql');

var pool = mysql.createPool(
  host: "http://kamerun-it.com/mysql",
  connectionLimit : 100,
  database: "****",
  user: "****",
  password: "*****",
  multipleStatements: true

);

错误

  throw err;
  ^

错误:getaddrinfo ENOTFOUND http://kamerun-it.com/mysql 在 GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:60:26) -------------------- 在 Protocol._enqueue (F:\kamerun it\aspi-api\node_modules\mysql\lib\protocol\Protocol.js:144:48) 在 Protocol.handshake (F:\kamerun it\aspi-api\node_modules\mysql\lib\protocol\Protocol.js:51:23) 在 PoolConnection.connect (F:\kamerun it\aspi-api\node_modules\mysql\lib\Connection.js:119:18) 在 Pool.getConnection (F:\kamerun it\aspi-api\node_modules\mysql\lib\Pool.js:48:16) 在对象。 (F:\kamerun it\aspi-api\app\model\db.js:16:8) 在 Module._compile (internal/modules/cjs/loader.js:956:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10) 在 Module.load (internal/modules/cjs/loader.js:812:32) 在 Function.Module._load (internal/modules/cjs/loader.js:724:14) 在 Module.require (internal/modules/cjs/loader.js:849:19) 错误号:'ENOTFOUND', 代码:'ENOTFOUND', 系统调用:'getaddrinfo', 主机名:'http://kamerun-it.com/mysql', 致命:真实

【问题讨论】:

【参考方案1】:

您的主机 URL 配置中可能有错误。

这是一个连接到远程 MySQL 的工作示例:

const mysql = require("mysql");

const connection = mysql.createPool(
  host: "remotemysql.com",
  user: "aKlLAqAfXH",
  password: "PZKuFVGRQD",
  database: "aKlLAqAfXH"
);

connection.query(
  "SELECT hexcode FROM colours WHERE precedence = 2",
  (err, result) => 
    err ? console.log(err) : console.log(result[0].hexcode);
  
);

这里有一个错误的主机参数:

const mysql = require("mysql");

const connection = mysql.createPool(
  host: "WRONGremotemysql.com",
  user: "aKlLAqAfXH",
  password: "PZKuFVGRQD",
  database: "aKlLAqAfXH"
);

connection.query(
  "SELECT hexcode FROM colours WHERE precedence = 2",
  (err, result) => 
    err ? console.log(err) : console.log(result[0].hexcode);
  
);

第二个返回相同的ENOTFOUND 错误。

检查这是否是正确的 URL,是否可以远程访问数据库以及您可以通过哪个端口使用它。

【讨论】:

当我要访问主机 url kamerun-it.com/mysql 时,我可以通过输入凭据来访问我的数据库(**可以确认 url 正确并且数据库可以远程访问??**) 您访问的是在 web 端口 80 上运行的 phpmyadmin 门户,远程访问数据库是不同的。不,说它可以远程访问是正确的。 远程访问不一样??在我的情况下如何访问这个数据库 如果您想通过不在同一台服务器上的脚本使用它 - 那就是远程访问。它应该由您的托管服务提供商或系统管理员允许/配置,或者如果您有权访问 mysql 配置,则启用它

以上是关于使用节点连接到远程 mysql 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Java 连接到远程 MySQL 数据库?

使用 PHP 连接到远程 MySQL 数据库的网页

使用 Java 通过 SSH 连接到远程 MySQL 数据库

如何使用 JetBrains DataGrip 连接到远程 MySQL 数据库

在具有特定 mysql 主机的远程主机上使用 SSH 隧道连接到 MySql 数据库

从 MySQL 连接到远程数据库 - 可能吗?