如何为我的 SQL 数据库添加远程主机以将其与我开发的应用程序连接

问题描述

我在本地开发 Express 应用程序以访问我的 wordpress 数据库(位于 https://example.com 上)时遇到了麻烦。这是我的配置(它可以工作,因为我可以使它与本地数据库一起使用。我已经尝试过没有 3306):

module.exports = {
HOST: "https://example.com:3306",USER: "user",PASSWORD: "password",DB: "mydb"

};

const MysqL = require("MysqL2");
const dbConfig = require("../config/db.config.js");

// Create a connection to the database
const connection = MysqL.createConnection({
  host: dbConfig.HOST,user: dbConfig.USER,password: dbConfig.PASSWORD,database: dbConfig.DB
});

// open the MysqL connection
connection.connect(error => {
  if (error) throw error;
  console.log("Successfully connected to the database.");
});

module.exports = connection;

我使用 webmin/virtualmin 来管理我的不同 VPS。这是我所做的:

  1. Webmin -> 服务器 -> MysqL 数据库服务器 -> 用户权限 -> 创建新用户
  2. 使用我的地址 ip 作为主机并拥有所有权限创建用户
  3. Webmin -> 服务器 -> MysqL 数据库服务器 -> 数据库权限 -> 创建新的数据库权限
  4. 使用与上述相同的用户名和我的 IP 地址作为主机并拥有所有权限为数据库创建一个用户
  5. Webmin -> 服务器 -> MysqL 数据库服务器 -> MysqL 服务器配置
  6. 将“MysqL 服务器侦听地址”设置为“任意”

即便如此,我也无法建立联系。有谁知道为什么?我得到的错误是这样的:

Error: getaddrinfo ENOTFOUND https://example.com:3306
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:69:26) {
  errno: -3008,code: 'ENOTFOUND',syscall: 'getaddrinfo',hostname: 'https://example.com:3306',fatal: true
}

解决方法

我解决了我的问题。 “未找到错误”是因为我将主机设为“example.com”而不是“190.x.x.x”(IP 地址)。

然后,我收到了“超时”错误。我在下面所做的没有用。你要授权MySQL监听其他端口,然后授权数据库自己做,最后配置防火墙。以下是步骤:

  1. Webmin -> Servers -> MySQL 数据库服务器 -> MySQL Server 配置 -> 设置监听地址为“0.0.0.0”。
  2. Virtualmin -> 编辑数据库 -> 远程主机 -> 添加我的 IP 地址。
  3. Webmin -> Networking -> Firewall 并添加规则“如果协议为 TCP 且目标端口为 3306”