一条命令即可运行可远程连接的MySQL容器:docker run -d --name mysql-dev -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 --restart=always -v /data/mysql:/var/lib/mysql mysql:8.0,需注意用户授权、配置挂载路径及数据卷权限。
直接拉起一个可连的 MySQL 容器
不需要构建镜像、不用改配置文件,
一条命令就能跑起来一个带密码、可远程连接的 MySQL 实例,适合开发/测试快速验证。
默认 root 密码通过
设置,不设会启动失败
端口映射必须显式声明:
,否则容器内服务无法从宿主机访问
加
避免 Docker 重启后服务掉线
首次运行会自动初始化数据目录,后续重启复用卷内容,不会重置密码或清库
连接被拒绝?检查 bind-address 和用户权限
容器内 MySQL 默认只监听
,即使端口映射了,外部客户端也会报
或
。
MySQL 8.0+ 默认创建的
用户不能远程登录,必须额外授权
启动时加
可让初始化脚本自动创建通配符主机用户(仅限 8.0.13+)
若已启动,进容器执行
无需修改
中的
—— Docker 容器默认用
监听,问题几乎全出在用户权限上
挂载配置文件导致启动失败的常见原因
想自定义
或
?别直接挂载整个
,MySQL 容器启动逻辑对配置路径很敏感。
Trae win
Trae Windows 官方版本现已全面支持 Win10 和 Win11 系统(64位)。国内开发者可直接访问 Trae 中文官网(trae.cn 或 trae.com.cn),一键下载官方正版 .exe 安装包,享受国内直连的高速稳定体验。安装过程极其简便,双击即可运行,并支持一键无缝导入 VS Code 或 Cursor 的原有主题、快捷键及插件配置。登录支持手机号、微信或稀土掘金账号。内置免费的豆包与 DeepSeek 等顶级大模型,让你开箱即用,轻松开启高效的 AI 智能编程之旅。
下载
官方镜像只认
和
下的文件
挂载单个配置文件时,路径必须是
,且文件需有 Unix 换行符(Windows 编辑保存易出错)
配置项写错格式(如漏掉
段)会导致容器立即退出,
里会显示
或
字符集相关配置(如
)必须和
配合,否则客户端连接后仍可能用错
编码
数据卷权限错误:container_
linux
.go:349: starting container process caused: chdir to cwd...no such file or directory
这个错误不是路径不存在,而是宿主机挂载点(如
)权限不足,MySQL 进程(uid=999)无法写入。
不要用
—— MySQL 容器启动时会校验目录属主,非
(即 uid=999)会拒绝启动
正确做法:宿主机上执行
(注意是数字 uid,不是用户名)
如果用 Docker Compose,可在 service 下加
显式指定运行身份,避免依赖挂载点权限
首次初始化后,目录里会出现
、
等子目录,此时再改权限也无效,必须清空重来
Docker 里跑 MySQL 最容易卡在权限、用户授权、配置加载顺序这三处,问题现象相似但根因不同,查日志前先确认这三项是否都对得上。
docker run-e MYSQL_ROOT_PASSWORD=123456-p 3306:3306--restart=alwaysdocker run -d \
--name mysql-dev \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
--restart=always \
-v /data/mysql:/var/lib/mysql \
-d mysql:8.0127.0.0.1Connection refusedAccess denied for userroot@localhostroot@'%'-e MYSQL_ROOT_HOST='%'mysql -uroot -p123456 -e "CREATE USER 'root'@'%' IDENTIFIED BY '123456'; GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;"my.cnfbind-address0.0.0.0max_connectionscharacter_set_server/etc/mysql/my.cnf/etc/mysql/conf.d/*.cnf/etc/mysql/mysql.conf.d/*.cnf/etc/mysql/conf.d/custom.cnf[mysqld]docker logs mysql-devunknown variableparse errorcollation-server=utf8mb4_unicode_ciinit_connect[mysqld]
max_connections = 200
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect = 'SET NAMES utf8mb4'/data/mysqlchmod 777 /data/mysqlmysql:mysqlsudo chown -R 999:999 /data/mysqluser: "999:999"ibdata1mysql