如何为我的 SQL 数据库添加远程主机以将其与我开发的应用程序连接
Posted
技术标签:
【中文标题】如何为我的 SQL 数据库添加远程主机以将其与我开发的应用程序连接【英文标题】:How to add remote host for my SQL Database to connect it with the app I develop 【发布时间】:2021-10-05 14:59:30 【问题描述】:我在本地开发快速应用程序以访问我的 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。这是我所做的:
-
Webmin -> 服务器 -> MySQL 数据库服务器 -> 用户权限 -> 创建新用户。
使用我的地址 ip 作为主机并具有所有权限创建用户。
Webmin -> 服务器 -> MySQL 数据库服务器 -> 数据库权限 -> 创建新数据库权限
为数据库创建一个用户,其用户名与上述相同,我的 ip 地址作为主机并具有所有权限。
Webmin -> 服务器 -> MySQL 数据库服务器 -> MySQL 服务器配置
将“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
【问题讨论】:
【参考方案1】:我解决了我的问题。 “找不到错误”是因为我将主机设置为“example.com”而不是“190.x.x.x”(IP地址)。
然后,我收到“超时”错误。我在下面所做的没有用。你必须授权 MySQL 监听其他端口,然后授权数据库自己这样做,最后配置防火墙。步骤如下:
-
Webmin -> 服务器 -> MySQL 数据库服务器 -> MySQL 服务器配置 -> 将监听地址设置为“0.0.0.0”。
Virtualmin -> 编辑数据库 -> 远程主机 -> 添加我的 ip 地址。
Webmin -> 网络 -> 防火墙并添加规则“如果协议是 TCP 并且目标端口是 3306”
【讨论】:
以上是关于如何为我的 SQL 数据库添加远程主机以将其与我开发的应用程序连接的主要内容,如果未能解决你的问题,请参考以下文章
如何加载 JSON 数据以将其与 select2 插件一起使用
如何为复杂的 sql 查询获取中间数据。 PostgreSQL