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)
但是在哪里可以找到证书?
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)
对我们来说,解决方案是提供者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)
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
| 归档时间: |
|
| 查看次数: |
3956 次 |
| 最近记录: |