NestJS配置MySQL TLS连接开启require_secure_transport报错求助
解决NestJS连接Azure MySQL的TLS加密连接问题
错误原因
当MySQL开启require_secure_transport=ON后,会强制所有连接使用加密传输,你的当前TypeORM配置未启用TLS,因此触发连接禁止错误。
修改TypeORM配置以启用TLS
更新你的AppModule配置,添加TLS相关参数,适配Azure MySQL的加密要求:
import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; // 若使用指定CA证书,需引入fs模块 // import * as fs from 'fs'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mysql', host: '<你的Azure MySQL服务器地址>', // 格式:xxx.mysql.database.azure.com port: 3306, username: '<你的Azure MySQL用户名>', // 格式:xxx@服务器名称 password: '<你的数据库密码>', database: 'test', entities: [], synchronize: true, // 启用TLS连接 ssl: { // 快速验证配置(测试环境可用) rejectUnauthorized: false, // 生产环境建议使用官方CA证书(从Azure控制台下载DigiCertGlobalRootCA.crt.pem) // ca: fs.readFileSync('./DigiCertGlobalRootCA.crt.pem').toString(), }, }), ], }) export class AppModule {}
关键注意事项
- 替换配置中的占位符为你的Azure MySQL实际信息:
- Host格式为
<服务器名称>.mysql.database.azure.com - 用户名必须包含
@<服务器名称>后缀
- Host格式为
- 测试环境可使用
rejectUnauthorized: false快速验证连接,生产环境请从Azure控制台下载官方的DigiCertGlobalRootCA.crt.pem证书,通过ca参数指定证书内容,保障连接安全性 - 确认Azure MySQL的防火墙规则已允许NestJS应用所在服务器/IP的访问权限
内容的提问来源于stack exchange,提问作者https.samurai
相关产品推荐
相关产品推荐

