Docker部署MySQL挂载本地目录失败启动报错,咨询挂载参数是否有误
问题诊断
你的docker run命令确实存在挂载参数相关错误,启动失败的核心原因如下:
- 参数顺序错误
docker run的语法规则为docker run [Docker配置参数] 镜像名 [容器内进程启动参数],-v属于Docker的配置参数,必须放在镜像名mysql/mysql-server:latest之前。你当前把-v参数写到了镜像名之后,Docker会将这部分参数传递给容器内的MySQL服务进程,MySQL无法识别挂载参数,直接抛出Too many arguments报错。 - 次要报错原因
第二个/var/lib/mysql/ is unusable报错是首次启动失败后,目录下残留了权限不匹配的临时文件导致的,重新启动前删除失败的旧容器即可解决。
修正方案
1. 清理旧的失败容器
先删除无法启动的残留容器:
docker rm -f mysql83
2. 执行修正后的启动命令
将-v参数移到镜像名之前,这里建议单独挂载到专用的导入目录,避免覆盖容器内置的/home目录内容:
docker run -p 3307:3306 -p 33061:33060 --name=mysql83 -v $HOME/Documents:/csv_import -d mysql/mysql-server:latest
3. 调整CSV导入命令
挂载后本地$HOME/Documents目录对应容器内的/csv_import目录,导入命令修改为:
LOAD DATA LOCAL INFILE '/csv_import/1.csv' INTO TABLE test FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
如果导入时提示权限问题,进入MySQL执行开启本地文件加载的配置即可:
SET GLOBAL local_infile = 1;
内容的提问来源于stack exchange,提问作者asha kr
相关产品推荐
相关产品推荐

