You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内Mautic连接Azure MySQL遇安全传输禁用错误求助

解决Mautic Docker容器连接Azure MySQL的SSL安全传输错误

问题详情

运行Mautic Docker容器连接Azure Database for MySQL时,抛出以下错误:

Warning: mysqli::__construct(): (HY000/3159): Connections using insecure transport are prohibited while --require_secure_transport=ON. in /makedb.php on line 20
MySQL Connection Error: (3159) Connections using insecure transport are prohibited while --require_secure_transport=ON.

当前使用的Docker Compose配置如下:

version: "2"

services:

  mautic:
    container_name: mautic
    image: mautic/mautic:v4-apache
    volumes:
      - mautic_data:/var/www/html
    environment:
      - MAUTIC_DB_HOST=mydbase.mysql.database.azure.com
      - MAUTIC_DB_USER=mydbuser
      - MAUTIC_DB_PASSWORD=mydbuserpwd
      - MAUTIC_DB_NAME=mydbname
    restart: always
    networks:
      - mauticnet
    ports:
      - "8880:80"

networks:
  mauticnet:

volumes:
  mautic_data:

Azure Database for MySQL默认启用SSL,且已通过容器外工具成功连接,但Mautic容器无法建立安全连接。

解决方案

1. 添加SSL连接环境变量

Mautic支持通过环境变量指定SSL参数,直接在environment块中追加以下配置即可:

- MAUTIC_DB_PORT=3306
- MAUTIC_DB_SSL=true
- MAUTIC_DB_SSL_KEY=/etc/ssl/certs/ca-certificates.crt

容器内的/etc/ssl/certs/ca-certificates.crt包含系统默认根证书,Azure MySQL信任该证书,无需额外下载。

修改后的完整Docker Compose配置:

version: "2"

services:

  mautic:
    container_name: mautic
    image: mautic/mautic:v4-apache
    volumes:
      - mautic_data:/var/www/html
    environment:
      - MAUTIC_DB_HOST=mydbase.mysql.database.azure.com
      - MAUTIC_DB_USER=mydbuser
      - MAUTIC_DB_PASSWORD=mydbuserpwd
      - MAUTIC_DB_NAME=mydbname
      - MAUTIC_DB_PORT=3306
      - MAUTIC_DB_SSL=true
      - MAUTIC_DB_SSL_KEY=/etc/ssl/certs/ca-certificates.crt
    restart: always
    networks:
      - mauticnet
    ports:
      - "8880:80"

networks:
  mauticnet:

volumes:
  mautic_data:

2. 手动挂载Azure SSL证书(如果默认证书无效)

如果上述配置没解决问题,可能是容器内默认证书不包含Azure的根证书,需要手动下载并挂载:

  1. 下载Azure MySQL根证书:
wget https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
  1. 在Docker Compose的volumes中添加证书挂载:
- ./DigiCertGlobalRootCA.crt.pem:/etc/ssl/certs/azure-mysql-ca.crt
  1. 更新环境变量中的证书路径:
- MAUTIC_DB_SSL_KEY=/etc/ssl/certs/azure-mysql-ca.crt

3. 确认Azure数据库SSL设置

检查Azure门户中数据库的“连接安全性”页面,确保强制SSL连接处于启用状态,同时确认数据库用户没有被限制为非SSL连接。

内容的提问来源于stack exchange,提问作者Krunal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:27:50