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

How to add remote host for my SQL Database to connect it with the app I develop

我在本地开发 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 -> 服务器 -> MySQL 数据库服务器 -> MySQL 服务器配置 -> 将侦听地址设置为“0.0.0.0”。
  2. Virtualmin -> 编辑数据库 -> 远程主机 -> 添加我的 ip 地址。
  3. Webmin -> 网络 -> 防火墙并添加规则“如果协议是 TCP 且目标端口是 3306”