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

如何在Docker中运行MySQL并将数据持久化到自定义目录

如何在Docker中正确运行MySQL并将数据持久化到自定义目录

问题重现

执行以下命令尝试挂载自定义目录时,容器启动后立即停止:

docker run --name mysql-mac -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my_strong_password -d mysql:latest -v /Users/alexeyzhulin/Projects/data/mysql:/var/lib/mysql

查看容器日志,核心报错为:

2023-07-17T16:53:46.768297Z 0 [ERROR] [MY-010147] [Server] Too many arguments (first extra is '/Users/alexeyzhulin/Projects/data/mysql:/var/lib/mysql').

而不使用挂载命令时,容器能正常运行:

docker run --name mysql-mac -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my_strong_password -d mysql:latest

错误原因

Docker的命令参数规则是:所有容器运行选项(如-v、-p、-e)必须放在镜像名称之前。你把-v挂载参数放在了mysql:latest之后,Docker会将其当作传递给MySQL服务器的命令参数,而非Docker的运行配置,导致MySQL识别到多余参数,启动失败。

正确解决方案

调整-v参数的位置,将其移到镜像名mysql:latest之前,执行以下命令:

docker run --name mysql-mac -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my_strong_password -v /Users/alexeyzhulin/Projects/data/mysql:/var/lib/mysql -d mysql:latest

额外注意事项

  • 确保本地目录/Users/alexeyzhulin/Projects/data/mysql已提前创建,避免Docker自动创建时权限异常:
    mkdir -p /Users/alexeyzhulin/Projects/data/mysql
    
  • Mac系统下如果遇到权限问题,可以调整本地目录的读写权限:
    chmod 775 /Users/alexeyzhulin/Projects/data/mysql
    
    或者在启动命令中添加--user $(id -u):$(id -g),让容器使用当前用户身份运行,避免权限冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:13:16