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

Docker Compose部署MySQL8:如何同时设置mysql_native_password与清空sql_mode

解决Docker Compose配置MySQL8同时启用mysql_native_password与自定义sql_mode的问题

正确配置方案

方案1:直接通过command传递参数

使用YAML多行或数组形式传递参数,注意不要给sql_mode的值加多余引号,避免解析错误:

services:
  mysql:
    image: mysql:8.0
    command:
      --default-authentication-plugin=mysql_native_password
      --sql_mode=NO_ENGINE_SUBSTITUTION
    # 补充你的环境变量、端口等配置
    environment:
      MYSQL_ROOT_PASSWORD: your_password

或者写成紧凑数组形式:

command: ["--default-authentication-plugin=mysql_native_password", "--sql_mode=NO_ENGINE_SUBSTITUTION"]

方案2:使用自定义配置文件(推荐,更稳定)

创建my.cnf配置文件,写入需要的参数:

[mysqld]
default-authentication-plugin=mysql_native_password
sql_mode=NO_ENGINE_SUBSTITUTION

在Docker Compose中挂载该文件到MySQL的自定义配置目录:

services:
  mysql:
    image: mysql:8.0
    volumes:
      - ./my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      MYSQL_ROOT_PASSWORD: your_password

你之前的方案失败原因

  1. bash命令组合方式错误:bash -c后需要执行完整的mysqld启动命令,而非直接写参数,你之前的写法相当于让bash执行两个参数作为命令,无法正常启动MySQL。
  2. 数组形式语法错误:你写的--sql_mode='NO_ENGINE_SUBSTITUTION缺少闭合单引号,且多余的单引号会被MySQL当作参数值的一部分,导致sql_mode配置无效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:36:23