首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何安全地连接到另一台服务器上的MySQL数据库?

如何安全地连接到另一台服务器上的MySQL数据库?
EN

Stack Overflow用户
提问于 2019-05-30 20:28:09
回答 3查看 717关注 0票数 6

我正在尝试将我的Discord机器人链接到另一台服务器上的MySQL数据库。然而,这个例子显然是不安全的:

代码语言:javascript
复制
const mysql = require('mysql');
const connection = mysql.createConnection({
  host     : 'hostname',
  port     : 'portnum',
  user     : 'db_user',
  password : 'db_user_password',
  database : 'db_name',
  charset  : 'utf8mb4'
});

我该如何建立(更)安全的连接?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-04 22:09:35

如果它是一个托管的数据库服务器,并且您有受保护的端点URL (意思是https:// host),那么只需使用它作为主机名host: 'hostname',这应该就足够了。

如果它是您拥有的私有服务器,并且您拥有SSL证书,那么您可以使用以下内容:

代码语言:javascript
复制
const fs = require('fs');
const mysql = require('mysql');

var connection = mysql.createConnection({
    host: '127.0.0.1',
    port: '3306',
    user: 'root',
    password: 'passw0rd',
    database: 'test',
    ssl: {
        ca: fs.readFileSync(__dirname + '/certs/ca.pem'),
        key: fs.readFileSync(__dirname + '/certs/client-key.pem'),
        cert: fs.readFileSync(__dirname + '/certs/client-cert.pem')
    }
});

connection.connect();
票数 7
EN

Stack Overflow用户

发布于 2019-06-05 13:48:15

您可以使用SSL进行连接,方法如下:

代码语言:javascript
复制
const fs = require('fs');
const mysql = require('mysql');
const connection = mysql.createConnection({
  host     : 'hostname',
  port     : 'portnum',
  user     : 'db_user',
  password : 'db_user_password',
  database : 'db_name',
  charset  : 'utf8mb4',
  ssl: {
      ca: fs.readFileSync(__dirname + '/certs/ca.pem'),
      key: fs.readFileSync(__dirname + '/certs/client-key.pem'),
      cert: fs.readFileSync(__dirname + '/certs/client-cert.pem')
  }
});

您还必须在MySql服务器上启用SSL。有一些tutorials online展示了如何执行此操作,但您需要根用户访问权限才能执行此操作。

票数 3
EN

Stack Overflow用户

发布于 2019-06-04 09:22:50

这并不是真的不安全。您有几个选择。首先,私有网络上的服务器是否在防火墙后面?或者它们只能通过公共ip地址相互连接?如果前者是真的,那你就没问题。但是,我会在服务器上添加防火墙规则,以便它只允许来自另一台计算机的连接。如果它们是在公共IP地址上连接,则需要执行相同的操作,并为MySQL使用非标准端口。您还可以添加另一个NIC并将MySQL服务绑定到该NIC。这样,如果黑客发现您的服务器,它将显示为关闭了所有端口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56378335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档