windows docker desktop安装mysql
以下分别采用docker和docker compose运行mysql容器
前提
安装wsl2,网络模式设置为镜像模式。
安装windows docker desktop

第一步:拉取镜像,如果失败,请自行更换镜像
$ docker pull mysql:8.0.41
方式一:docker命令直接启动
# 进入wsl,拉取镜像
$ docker pull mysql:8.0.41
# 配置mysql容器需要映射的宿主目录,用于保存数据,防止容器删除造成数据丢失
$ sudo mkdir -p /etc/docker/mysql80
# 运行容器,注意同时绑定ip和端口。
$ docker run --name mysql80 -v /etc/docker/mysql80:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=密码 -p 127.0.0.1:3306:3306 -d mysql:8.0.41
# 查看运行状态
$ docker ps
# 要访问容器内的终端,可以使用以下命令:
$ docker exec -it mysql80 bash
bash-5.1#
# 容器内,以 root 用户身份连接:
bash-5.1# mysql -u root -p
Enter password: ...
mysql>
# 配置root
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '密码';
mysql> GRANT ALL ON *.* TO 'root'@'%';
mysql> FLUSH PRIVILEGES;
mysql> exit;
测试
windows本地安装使用MySQL Workbench测试连接,注意主机地址 (Host)127.0.0.1

方式二:docker compose
创建文件夹,例如c:\docker\mysql
此文件夹下创建docker-compose.yaml文件,并复制以下内容
version: '3.8'
services:
mysql:
image: mysql:8.0.41
container_name: mysql-db
command: --default-authentication-plugin=mysql_native_password
restart: always
networks: #注意这里指定了网络,如果不指定,会创建默认网络
- local
environment:
MYSQL_ROOT_PASSWORD: <你的密码>
# 可选,:创建普通用户和数据库
# MYSQL_DATABASE: mydb
# MYSQL_USER: myuser
# MYSQL_PASSWORD: password
ports:
- "3306:3306" # 映射到宿主机 3306 端口(如需外部访问)
volumes:
# 挂载本地数据目录到容器的 /var/lib/mysql(持久化数据)
- ./mysql/data:/var/lib/mysql
# 挂载本地配置文件到容器(覆盖默认配置)
- ./mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf
#以下网络二选一(因为上述mysql配置了networks参数)
#新建docker网络
networks:
local:
name: local
driver: bridge
#或加入已有docker网络
#networks:
# local:
# external: true # 表示 'local' 是已存在的外部网络
# name: local # 明确指定网络名称(推荐)
执行
#进入c:\\docker\mysql\目录,即docker-compose.yaml所在目录
cd c:\\docker\mysql\
#创建mysql数据和配置的本地路径,数据在本地,删除容器不会丢数据
mkdir data
mkdir conf
# 执行docker compose命令
# 启动成功,就可以在docker desktop里看到了。
docker compose up -d
以下是其他命令参考
# 查看日志
docker-compose logs mysql
# 进入 MySQL 容器执行命令
docker exec -it mysql-db mysql -uroot -p
# 停止服务
docker-compose down
# 完全清理(⚠️ 会删除数据!)
docker-compose down -v # -v 会删除关联的匿名卷(但你用了 bind mount,数据在本地,不会丢)
浙公网安备 33010602011771号