续写 azure mysql 的安全连接

Alv*_*vin 3 mysql ssl azure node.js

如何使用 sequelize 连接到 Azure MySQL?

来自 Azure nodejs 示例:

const mysql = require('mysql2');

var config =
{
    host: 'myserver4demo.mysql.database.azure.com',
    user: 'myadmin@myserver4demo',
    password: 'your_password',
    database: 'quickstartdb',
    port: 3306,
    ssl: true
};
Run Code Online (Sandbox Code Playgroud)

sequelize 的配置是什么:

我尝试使用 ssl 但没有成功:

ssl: true,
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Unable to connect to database: SequelizeConnectionError: SSL connection is required. Please specify SSL options and retry.
Run Code Online (Sandbox Code Playgroud)

我得到了这个工作:

dialectOptions: {
      encrypt: true,
      ssl : {
        rejectUnauthorized: false
      }
    },
Run Code Online (Sandbox Code Playgroud)

但是在哪里可以找到证书?

Dom*_*Dom 6

Sequelize 文档在 SSL 方面缺乏,并且接受的答案并不像评论所述的那样适用于 Sequelize。

我也很难知道如何添加 SSL 选项,但在 Github 上很好地发现了一个包含代码片段的问题。

const config = {
   username: process.env["DB_USER"],
   password: process.env["DB_PASS"],
   host: process.env["DB_HOST"],
   dialect: "mysql",
   database: dbs[process.env["USE_DB"]],
   pool: {
       max: 5,
       idle: 30000,
       acquire: 60000
   },
   dialectOptions: {
       ssl: {
           ca: fs.readFileSync(__dirname + '/ssl/BaltimoreCyberTrustRoot.crt.pem')
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

Github 问题对我有帮助。


oak*_*oak 6

对我们来说,解决方案是提供者dialectOptions

{
    "host":<hostname>,
    "port":<port>,         
    "user":<username>,
    "password":<password>,
    "port": 3306,
    "dialect": "mysql",
    "ssl": true,
    "dialectOptions": {
       "ssl": {
          "require": true
       }
     }
 }
Run Code Online (Sandbox Code Playgroud)


EMX*_*EMX 0

var conn = mysql.createConnection({
       host: 'myserver4demo.mysql.database.azure.com',
       user: 'myadmin@myserver4demo',
       password: 'your_password',
       database: 'quickstartdb',
       port: 3306,
       ssl: {
         key: fs.readFileSync('./certs/client-key.pem'),
         cert: fs.readFileSync('./certs/client-cert.pem')
       }
    });
Run Code Online (Sandbox Code Playgroud)

在应用程序中配置 SSL 连接以安全地连接到 Azure Database for MySQL

  • 虽然这个答案是使用 Node.js 通过 SSL 连接到 MySQL DB 的一种方法,但它并不像所提出的问题那样应用 Sequelize。 (2认同)