需完成镜像获取、容器创建、数据持久化与网络连通四环节:启动Docker Desktop并验证docker version/docker info;执行docker pull mysql:8.0拉取镜像;用docker run命令启动容器,推荐挂载conf/data/log三目录并配置mysql_native_password与utf8mb4;最后授权root@'%'并用127.0.0.1连接。

要在Windows系统上通过Docker快速启动一个可用的MySQL数据库容器,绕过传统安装的繁琐配置、环境冲突和版本管理难题,直接获得开箱即用的8.0服务,你需要完成镜像获取、容器创建、数据持久化与网络连通四个关键环节。
确认Docker Desktop已就绪
打开Windows开始菜单,搜索并启动Docker Desktop;等待右下角托盘图标变为绿色且显示“Docker Desktop is running”。
以管理员身份打开PowerShell或CMD,执行 docker version,若返回客户端和服务端版本信息(Server: Engine Version 26.x+),说明Docker守护进程已正常工作。【若提示“Docker daemon not running”或命令未识别,请先检查Hyper-V/WSL2是否启用,并重启Docker Desktop】
再运行 docker info,确认输出中包含 OSType: linux 和 Architecture: x86_64(或 arm64),这是运行MySQL官方镜像的前提。
拉取MySQL 8.0官方镜像
在终端中执行:docker pull mysql:8.0。
该命令从Docker Hub下载官方维护的MySQL 8.0镜像,体积约1.2GB,国内用户若下载缓慢,需提前在Docker Desktop → Settings → Docker Engine → Registry mirrors中配置阿里云或腾讯云加速地址。
拉取完成后,运行 docker images | findstr "mysql",应看到类似 mysql 8.0 abc123... 2 weeks ago 1.21GB 的条目,表示镜像已就位。
创建并运行MySQL容器
方法一:基础运行(适合临时测试)
执行:docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=MyPass123 -p 3306:3306 -d mysql:8.0。
这会以后台模式启动容器,设置root密码为MyPass123,并将宿主机3306端口映射到容器内3306端口。注意:此方式不挂载数据卷,容器删除后所有数据将丢失。
方法二:生产级运行(推荐)
第一步:在Windows上新建目录用于持久化存储,例如 C:\mydata\mysql\conf、C:\mydata\mysql\data、C:\mydata\mysql\log。
第二步:在 C:\mydata\mysql\conf 下创建 my.cnf 文件,内容为:
[mysqld]default_authentication_plugin=mysql_native_passwordcharacter-set-server=utf8mb4collation-server=utf8mb4_unicode_ciskip-host-cacheskip-name-resolve
第三步:执行完整命令:
docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=MyPass123 -e MYSQL_DATABASE=myapp -p 3306:3306 -v C:\mydata\mysql\conf\my.cnf:/etc/mysql/conf.d/my.cnf:ro -v C:\mydata\mysql\data:/var/lib/mysql -v C:\mydata\mysql\log:/var/log/mysql -d --restart=always mysql:8.0
这里 【-v 参数路径必须使用反斜杠 \ 或正斜杠 /,且宿主路径需为绝对路径;Windows路径中不能出现空格或中文,否则容器将无法启动】。--restart=always 确保宿主机重启后MySQL自动恢复运行。
验证容器是否正常工作
运行 docker ps -f name=mysql8,观察STATUS列是否为 “Up X minutes”,PORTS列是否显示 0.0.0.0:3306->3306/tcp。
进入容器执行本地连接:docker exec -it mysql8 mysql -uroot -pMyPass123 -e "SELECT VERSION(), @@hostname, @@datadir;",若返回MySQL 8.0.x版本号、主机名(如8a1b2c3d4e5f)和数据目录路径,说明服务已就绪。
在Windows本机用MySQL客户端(如MySQL Workbench、DBeaver或VS Code MySQL插件)连接:Host = 127.0.0.1,Port = 3306,Username = root,Password = MyPass123。首次连接可能因默认用户权限限制失败,此时需额外执行授权(见下一步)。
开放远程访问权限
MySQL 8.0默认只允许localhost连接root用户,外部工具连接会报错“Host 'xxx' is not allowed to connect”。
执行:docker exec -it mysql8 mysql -uroot -pMyPass123 -e "CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MyPass123'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;"。
该命令创建通配符主机的root用户并赋予全部权限,【操作不可逆,仅限开发/测试环境使用;生产环境请创建专用低权限用户并限定IP段】。
再次尝试外部客户端连接,应能成功建立会话并执行 SHOW DATABASES; 查看myapp等数据库。


















