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,数据在本地,不会丢)
posted @ 2025-05-22 18:27  悠哉大斌  阅读(604)  评论(0)    收藏  举报