一、简介
本文描述的是 Windows10 如何使用 docker compose 来安装部署 MYSQL容器
二、环境要求
- Windows 10
- Docker & Docker compse was installed
三、部署
3.1)前期准备
MYSQL 版本我们使用的是:8.0 ,你可以先拉下来镜像
docker pull mysql:8.0
Docker网络命名为 localhost-network
docker network create localhost-network
接下来,我们使用docker compose 方式来部署MYSQL。
3.2)创建配置文件
假设我们的当前目录是 D:\workspaces
- 构建 docker-compose-mysql.yml 配置文件
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql
command: [ "--max_connections=1000" ]
ports:
- "3306:3306"
security_opt:
- seccomp:unconfined
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/config/my.cnf:/etc/mysql/my.cnf
- ./mysql/init:/docker-entrypoint-initdb.d
- ./mysql/log:/var/log/mysql
- ./mysql/mysql-files:/var/lib/mysql-files
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_ALLOW_EMPTY_PASSWORD=no
- MYSQL_USER=yourname
- MYSQL_PASS=password
networks:
- localhost-network
restart: always
volumes:
mysql:
mysql_config:
networks:
localhost-network:
name: localhost-network-1
- 创建MYSQL的挂载目录,自行鼠标右键创建 D:\workspaces\mysql 目录以及相关的子文件夹 data、config、init、log、mysql-files
- 添加 MYSQL 启动配置文件 my.cnf 文件地址:D:\workspaces\mysql\config\my.cnf
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1024
default-storage-engine=INNODB
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
3.3)运行部署
直接运行CMD命令
docker compose -f docker-compose-mysql.yml up -d
# OR
docker-compose -f docker-compose-mysql.yml up -d
3.4)验证测试
查看MYSQL容器是否运行?
docker ps
进入MYSQL容器,使用命令连接MYSQL
docker exec -it mysql /bin/bash
# 连接数据库
mysql -u root -p
# 显示数据库列表
show databases;
如:创建数据库用户 nine 或者你可以直接在 D:\workspaces\mysql\init 文件夹下写一个init.sql文件,填写你要执行的SQL语句
# 显示数据库列表
show databases;
# 选择数据库mysql
use mysql;
# 创建数据库用户 nine
CREATE USER 'nine'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
# 授予访问权限
GRANT ALL PRIVILEGES ON *.* TO 'nine'@'%';
init.sql
CREATE DATABASE IF NOT EXISTS `testdb` DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'nine'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'nine'@'%';
FLUSH PRIVILEGES;