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

如何在Docker-Compose中配置MySQL容器,实现创建的用户可远程连接?

直接通过Docker Compose配置完成MySQL用户权限授予

你当前的Docker Compose配置需要手动进入容器执行权限授予语句,要实现无需手动操作,可通过修改command字段,让MySQL启动时自动执行权限配置语句,同时修正原配置中卷定义的语法错误:

version: '3.3'
services:
  db:
    image: mysql/mysql-server
    restart: always
    environment:
      MYSQL_DATABASE: 'db'
      MYSQL_USER: 'user'
      MYSQL_PASSWORD: 'strongpasswordnobodycanguessorcrackatall'
      # Password for root access
      MYSQL_ROOT_PASSWORD: 'somethingevenmorestrongerthaneverbefore'
    ports:
      - '3306:3306'
    expose:
      - '3306'
    volumes:
      - compose-my-db:/var/lib/mysql
    command: >
      bash -c "
      echo 'GRANT ALL ON *.* TO \"c\"@\"%\"; FLUSH PRIVILEGES;' > /tmp/init.sql;
      exec mysqld --init-file=/tmp/init.sql
      "
volumes:
  compose-my-db:
  • 这里通过command字段用bash命令组合,先把权限授予语句写入临时文件/tmp/init.sql
  • 然后用exec启动MySQL服务,同时通过--init-file参数让MySQL在初始化阶段自动执行该SQL文件
  • 修正了原配置中卷定义的语法错误,确保命名卷compose-my-db正确挂载到MySQL的默认数据目录/var/lib/mysql

注意:这种方式只会在MySQL首次初始化(即对应卷为空时)执行一次权限配置,后续容器重启不会重复执行,避免出现权限重复授予的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 10:22:41