Windows系统下使用docker-compose安装mysql8和mysql5.7

news2024/9/19 9:08:10

windows环境搭建专栏🔗点击跳转

win系统环境搭建(十四)——Windows系统下使用docker安装mysql8和mysql5.7

文章目录

  • win系统环境搭建(十四)——Windows系统下使用docker安装mysql8和mysql5.7
    • MySQL8
      • 1.新建文件夹
      • 2.创建docker-compose.yaml
      • 3.创建my.cnf
      • 4.mysql容器的启动和关闭
    • MySQL5.7
      • 1.新建文件夹
      • 2.创建docker-compose.yaml
      • 3.创建my.cnf
      • 4.mysql容器的启动和关闭
    • 同时使用mysql8和mysql5.7

能使用这篇文章的前提是你的window电脑已经安装了docker,若没有docker,请参考我的一篇文章win系统环境搭建(十一)——Windows安装docker,把docker安装一下。若已经有了docker,请往下看。如果你下载的时候感觉拉取镜像很慢,可以参考我这一篇文章win系统环境搭建(十三)——Windows系统的docker设置阿里源,把你的docker换成阿里镜像,就会拉取地快一点。

如果你读过我之前写的文章,就知道这一篇博客的所有内容和我写的CentOS系统环境搭建(三)——使用docker-compose安装mysqlUbuntu系统环境搭建(六)——使用docker-compose安装MySQL内容是一模一样的,为什么一样的内容我要写三遍呢?因为他们一个是centos系统,另一个是Ubuntu系统,另一个是windos系统。But ! ! ! 为什么一样的内容我要写三遍呢? 因为他们都是docker。docker是真正的跨平台!你明白我意思了吗?

如果你能掌握本篇博客的内容,我们今后将不必再痛苦地在windows繁琐地安装mysql8,不必在安装mysql的时候面对种种报错,又或者某天被变态客户或者变态领导说,我们这次项目要用mysql5.7,请切换一个mysql5.7,然后卑微的开发者只能卸载自己电脑上的mysq8,然后安装mysql5.7,随之而来的又是安装过程中一个一个的大坑!?!让痛苦滚蛋吧!😘该文献给所有在windows系统上安装MySQL的时候受苦受难的人。

现在,打开cmd让我们开始吧!

MySQL8

1.新建文件夹

mkdir C:\App\mysql8

2.创建docker-compose.yaml

cd C:\App\mysql8
vim docker-compose.yaml

为防止格式错乱可以用粘贴模式粘贴

:set paste

docker-compose.yaml内容如下

version: '3.8'
services:
  mysql:
    # 使用 MySQL 8.0.28 镜像
    image: mysql:8.0.28
    # 容器名称为 docker_mysql
    container_name: docker_mysql8
    # 设置网络
    ports:
      - 3306:3306
    # 容器退出时自动重启
    restart: always
    # 防止被OOM kill, -1000为最低优先级
    oom_score_adj: -1000
    environment:
      # 设置 MySQL root 用户的密码为 root(密码一定记得改复杂,不然很危险)
      MYSQL_ROOT_PASSWORD: root
    volumes:
      # 挂载数据目录
      - ./data:/var/lib/mysql
      - ./mysql-files:/var/lib/mysql-files
      # 挂载配置文件,并设置为只读模式
      - ./my.cnf:/etc/mysql/my.cnf:ro
    command:
      # 使用指定的配置文件启动
      - --defaults-file=/etc/mysql/my.cnf

3.创建my.cnf

cd C:\App\mysql8
vim my.cnf

my.cnf内容如下

[mysql]
# 默认字符集
default-character-set=utf8mb4
[client]
# 客户端使用的端口号
port=3306
# 客户端连接的 socket 路径
socket=/var/run/mysqld/mysqld.sock
[mysqld]
# 限制 MySQL 服务器只能从 /var/lib/mysql-files 目录读取文件或将文件写入该目录
secure-file-priv=/var/lib/mysql-files
# 使用主机名进行缓存查找,以提高连接性能
skip-host-cache
# 进行权限验证时,会尝试将客户端的主机名解析为 IP 地址
skip-name-resolve
# 服务端使用的端口号
port=3306
# MySQL 运行用户
user=mysql
# 服务器 ID
server-id=1
# 日志时间系统时间
log_timestamps=SYSTEM
# 默认时区东八区
default-time_zone='+8:00'
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
# 服务器连接的 socket 路径
socket=/var/run/mysqld/mysqld.sock
# 数据存放目录
datadir=/var/lib/mysql
# 开启二进制日志功能
log-bin=/var/lib/mysql/mysql-bin
# InnoDB 数据文件存放目录
innodb_data_home_dir=/var/lib/mysql
# InnoDB 日志文件存放目录
innodb_log_group_home_dir=/var/lib/mysql
# MySQL 错误日志文件路径
log-error=/var/lib/mysql/mysql.log
# 存放 MySQL 进程 ID 的文件路径
pid-file=/var/lib/mysql/mysql.pid
# 表名大小写不敏感
lower_case_table_names=1
# 服务端字符集
character-set-server=utf8mb4
# 自动提交所有事务
autocommit=1
# 跳过排它锁定
skip-external-locking
# 键缓存大小
key_buffer_size=64M
# 允许的最大数据包大小
max_allowed_packet=16M
# 表缓存
table_open_cache=6000
# 排序缓存大小
sort_buffer_size=16M
# 网络缓冲区长度
net_buffer_length=32K
# 读取缓冲区大小
read_buffer_size=16M
# 随机读取缓冲区大小
read_rnd_buffer_size=1024K
# MyISAM 排序缓冲区大小
myisam_sort_buffer_size=265M
# 线程缓存大小
thread_cache_size=512
# 临时表大小
tmp_table_size=512M
# 启用显式默认时间戳
explicit_defaults_for_timestamp=ON
# 最大连接数
max_connections=3000
# 连接错误最大数量
max_connect_errors=100
# 打开文件限制
open_files_limit=65535
# 二进制日志格式
binlog_format=mixed
# 二进制日志过期时间(秒)
binlog_expire_logs_seconds=864000
# 创建表时使用的默认存储引擎
default_storage_engine=InnoDB
# InnoDB 数据文件路径设置
innodb_data_file_path=ibdata1:10M:autoextend
# InnoDB 缓冲池大小
innodb_buffer_pool_size=2G
# InnoDB 日志文件大小
innodb_log_file_size=512M
# InnoDB 日志缓冲区大小
innodb_log_buffer_size=16M
# InnoDB 每次提交时刷新日志
innodb_flush_log_at_trx_commit=1
# InnoDB 加锁等待超时时间(秒)
innodb_lock_wait_timeout=60
[mysqldump]
# 快速导出数据
quick
# 允许的最大数据包大小
max_allowed_packet=16M
[myisamchk]
# 键缓存大小
key_buffer_size=64M
# 排序缓冲区大小
sort_buffer_size=16M
# 读取缓冲区大小
read_buffer=8M
# 写入缓冲区大小
write_buffer=8M
[mysqlhotcopy]
# 交互式超时时间
interactive-timeout

4.mysql容器的启动和关闭

启动

docker compose up -d

关闭(删除)

docker compose down

MySQL5.7

1.新建文件夹

mkdir C:\App\mysql57

2.创建docker-compose.yaml

cd C:\App\mysql57
vim docker-compose.yaml

为防止格式错乱可以用粘贴模式粘贴

:set paste

docker-compose.yaml内容如下

version: '3.8'
services:
  mysql:
    # 使用 MySQL 5.7.44 镜像
    image: mysql:5.7.44
    # 容器名称为 docker_mysql
    container_name: docker_mysql57
    # 设置网络
    ports:
      - 3307:3306
    # 容器退出时自动重启
    restart: always
    # 防止被OOM kill, -1000为最低优先级
    oom_score_adj: -1000
    environment:
      # 设置 MySQL root 用户的密码为 root
      MYSQL_ROOT_PASSWORD: root
    volumes:
      # 挂载数据目录
      - ./data:/var/lib/mysql
      - ./mysql-files:/var/lib/mysql-files
      # 挂载配置文件,并设置为只读模式
      - ./my.cnf:/etc/mysql/my.cnf:ro
    command:
      # 使用指定的配置文件启动
      - --defaults-file=/etc/mysql/my.cnf

3.创建my.cnf

cd C:\App\mysql57
vim my.cnf

my.cnf内容如下

[mysql]
# 默认字符集
default-character-set=utf8mb4
[client]
# 客户端使用的端口号
port=3306
socket=/var/run/mysqld/mysqld.sock
default-character-set=utf8mb4
[mysqld]
# 限制 MySQL 服务器只能从 /var/lib/mysql-files 目录读取文件或将文件写入该目录
secure-file-priv=/var/lib/mysql-files
# docker mysql 默认配置
datadir=/var/lib/mysql
# 开启二进制日志功能
log-bin=/var/lib/mysql/mysql-bin
# InnoDB 数据文件存放目录
innodb_data_home_dir=/var/lib/mysql
# InnoDB 日志文件存放目录
innodb_log_group_home_dir=/var/lib/mysql
# MySQL 错误日志文件路径
log-error=/var/lib/mysql/mysql.log
# 存放 MySQL 进程 ID 的文件路径
pid-file=/var/lib/mysql/mysql.pid
socket=/var/run/mysqld/mysqld.sock
user=mysql
# 用于控制是否允许 MySQL 服务器使用符号链接
symbolic-links=0
# 使用主机名进行缓存查找,以提高连接性能
skip-host-cache
# 进行权限验证时,会尝试将客户端的主机名解析为 IP 地址
skip-name-resolve
#数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器
server-id=1
#系统数据库编码设置,排序规则
character_set_server=utf8mb4
collation_server=utf8mb4_bin
# 日志时间系统时间
log_timestamps=SYSTEM
# 默认时区东八区
default-time_zone='+8:00'
# 表名大小写不敏感
lower_case_table_names=1
# 自动提交所有事务
autocommit=1
# 跳过排它锁定
skip-external-locking
# 启用显式默认时间戳
explicit_defaults_for_timestamp=ON
#默认sql模式,严格模式
#sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,
#NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#ONLY_FULL_GROUP_BY 
#NO_ZERO_IN_DATE 不允许年月为0
#NO_ZERO_DATE 不允许插入年月为0的日期
#ERROR_FOR_DIVISION_BY_ZERO 在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如 果未给出该模式,那么数据被零除时MySQL返回NULL
#NO_ENGINE_SUBSTITUTION 不使用默认的存储引擎替代
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#是MySQL执行排序使用的缓冲大小。如果想要增加ORDER BY的速度,首先看是否可以让MySQL使用索引而不是额外的排序阶段
#如果不能,可以尝试增加sort_buffer_size变量的大小
sort_buffer_size=16M
#应用程序经常会出现一些两表(或多表)Join的操作需求,MySQL在完成某些 Join 需求的时候(all/index join),
#为了减少参与Join的“被驱动表”的读取次数以提高性能,需要使用到 Join Buffer 来协助完成 Join操作。
#当 Join Buffer 太小,MySQL 不会将该 Buffer 存入磁盘文件,而是先将Join Buffer中的结果集与需要 Join 的表进行 Join 操作
#然后清空 Join Buffer 中的数据,继续将剩余的结果集写入此 Buffer 中,
#如此往复。这势必会造成被驱动表需要被多次读取,成倍增加 IO 访问,降低效率。
#若果多表连接需求大,则这个值要设置大一点。
join_buffer_size=16M
#索引块的缓冲区大默认16M
key_buffer_size=64M
# 消息缓冲区会用到该列,该值太小则会在处理大包时产生错误。如果使用大的text,BLOB列,必须增加该值
max_allowed_packet=16M
# 最大连接数
max_connections=3000
# 连接错误最大数量
max_connect_errors=100
#表描述符缓存大小,可减少文件打开/关闭次数,一般max_connections*2。
table_open_cache=6000
#MySQL 缓存 table 句柄的分区的个数,每个cache_instance<=table_open_cache/table_open_cache_instances
table_open_cache_instances=32
#mysql打开最大文件数
open_files_limit=65535
#慢查询,开发调式阶段才需要开启慢日志功能。上线后关闭
slow_query_log=OFF
# 创建表时使用的默认存储引擎
default_storage_engine=InnoDB
# InnoDB 数据文件路径设置
innodb_data_file_path=ibdata1:10M:autoextend
# InnoDB 缓冲池大小
innodb_buffer_pool_size=2G
# InnoDB 日志文件大小
innodb_log_file_size=512M
# InnoDB 日志缓冲区大小
innodb_log_buffer_size=16M
# InnoDB 每次提交时刷新日志
innodb_flush_log_at_trx_commit=1
# InnoDB 加锁等待超时时间(秒)
innodb_lock_wait_timeout=60
# 网络缓冲区长度
net_buffer_length=32K
# 读取缓冲区大小
read_buffer_size=16M
# 随机读取缓冲区大小
read_rnd_buffer_size=1024K
# MyISAM 排序缓冲区大小
myisam_sort_buffer_size=265M
# 线程缓存大小
thread_cache_size=512
# 临时表大小
tmp_table_size=512M
[mysqldump]
# 快速导出数据
quick
# 允许的最大数据包大小
max_allowed_packet=16M
[myisamchk]
# 键缓存大小
key_buffer_size=512M
# 排序缓冲区大小
sort_buffer_size=16M
# 读取缓冲区大小
read_buffer=16M
# 写入缓冲区大小
write_buffer=16M
[mysqlhotcopy]
# 交互式超时时间
interactive-timeout

4.mysql容器的启动和关闭

启动

docker compose up -d

关闭(删除)

docker compose down

同时使用mysql8和mysql5.7

先看看有没有两个容器都在运行

docker ps

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

你就说好不好用吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1399065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++播放音乐:使用EGE图形库

——开胃菜&#xff0c;闲话篓子一大片 最近&#xff0c;我发现ege图形库不是个正经的图形库—— 那天&#xff0c;我又在打趣儿地翻代码时&#xff0c;无意间看到了这个&#xff1a; 图形库&#xff1f;&#xff01;你哪来的音乐&#xff08;Music&#xff09;呢&#xff1f…

【蓝桥备赛】求阶乘

题目链接 求阶乘 个人想法 之前做过计算阶乘结果后面有几个0的题目&#xff0c;这里看到本题之后&#xff0c;很快就有思路了。想要得到阶乘结果有几个0&#xff0c;首先尾数后面的0&#xff0c;最小肯定是因为因子中存在10。然后&#xff0c;10如何得来呢&#xff1f; 2 * …

【LeetCode】141. 环形链表

leetcode题目链接 141. 环形链表 #include <stdio.h> #include <stdbool.h>struct ListNode {int val;struct ListNode* next; }; typedef struct ListNode ListNode;bool hasCycle(ListNode* head) {ListNode* slow head, * fast head;while (fast &&…

SpringBoot 3.1.7 集成Mybatis

一、介绍 Mybatis的中文官网并没找到与SpringBoot最新的集成的教程&#xff0c;有的都是老式的配置方法&#xff0c;所以记录一下怎么我是怎么集成SpringBoot 3.1.7 集成Mybatis 的方法 有条件的可以打开源网站 https://github.com/mybatis/spring-boot-starter 没有条件的我…

一款满足基层医疗机构各类业务需要的:健康云HIS系统源码,功能包括病患问诊、电子病历、开药发药、住院管理、护理文书、病案管理等功能。

一款满足基层医疗机构各类业务需要的健康云HIS系统。该系统能帮助基层医疗机构完成日常各类业务&#xff0c;提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、护理文书、病案管理、统计查询、医生站和护士站等一系列常规功能&#xff0c;能与公卫、PACS等各类外部系…

C++-类和对象(3)

1. 再谈构造函数 1.1 构造函数体赋值 我们在创建一个对象时&#xff0c;编译器会调用该对象的构造函数对该对象的成员进行初始化。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _month;int _day…

通过代理如何调通openai的api

调通openai的api 一、前提二、通过curl调通openai的api三、通过python调通openai的api 一、前提 会魔法上网本地运行代理软件&#xff0c;知道端口号&#xff08;如1081&#xff09;。 127.0.0.1:1081二、通过curl调通openai的api 如果在国外&#xff0c;没有qiang&#xff…

AWS 专题学习 P7 (FSx、SQS、SNS)

文章目录 Amazon FSx – 概述Amazon FSx for LustreFSx Lustre - 文件系统部署选项 Amazon FSx for NetApp ONTAPAmazon FSx for OpenZFSHybrid Cloud 存储AWS 存储云原生选项AWS 存储网关Amazon S3 File GatewayAmazon FSx File GatewayVolume GatewayTape GatewayStorage Gat…

设计一个Key-Value缓存去存储最近的Web Server查询的结果

1: 定义Use Case和约束 Use Cases 我们可以定义如下 Scope: User 发送一个 search request, 缓存命中成功返回DataUser 发送一个 search request, 缓存未命中&#xff0c;未成功返回DataService 有高可用 约束和假设 状态假设 Traffic 分布不是均匀的 热度高的查询总是被…

HarmonyOS鸿蒙学习基础篇 - 什么是HarmonyOS

概述 HarmonyOS是华为开发的一款面向未来的全场景分布式智慧操作系统&#xff0c;将逐步覆盖18N全场景终端设备&#xff1b; 对消费者而言 HarmonyOS用一个‘统一的软件系统’ 从根本上解决消费者面对大量智能终端体验割裂的问题&#xff0c;为消费者带来同意便利安全的智慧化全…

使用 Python 创造你自己的计算机游戏(游戏编程快速上手)第四版:第十五章到第十八章

十五、反转棋游戏 原文&#xff1a;inventwithpython.com/invent4thed/chapter15.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 在本章中&#xff0c;我们将制作反转棋&#xff0c;也称为黑白棋或奥赛罗。这个双人棋盘游戏是在网格上进行的&#xff0c;因此我们…

【Qt5】QString的成员函数trimmed

2024年1月19日&#xff0c;周五下午 QString 的 trimmed 方法是用于移除字符串两端的空白字符&#xff08;空格、制表符、换行符等&#xff09;的方法。它返回一个新的字符串&#xff0c;该字符串是原始字符串去除两端空白后的结果。 下面是一个简单的示例&#xff1a; #incl…

【Linux 内核源码分析】堆内存管理

堆 堆是一种动态分配内存的数据结构&#xff0c;用于存储和管理动态分配的对象。它是一块连续的内存空间&#xff0c;用于存储程序运行时动态申请的内存。 堆可以被看作是一个由各个内存块组成的堆栈&#xff0c;其中每个内存块都有一个地址指针&#xff0c;指向下一个内存块…

实体类(VO,DO,DTO)的划分

实体类&#xff08;VO&#xff0c;DO&#xff0c;DTO&#xff09;的划分 什么是“实体类” 实体类的主要职责是存储和管理系统内部的信息&#xff0c;它也可以有行为&#xff0c;甚至很复杂的行为&#xff0c;但这些行为必须与它所代表的实体对象密切相关。实体类有两方面内容…

51单片机8*8点阵屏

8*8点阵屏 8*8点阵屏是一种LED显示屏&#xff0c;它由8行和8列的LED灯组成。每个LED灯的开闭状态都可以独立控制&#xff0c;从而可以显示出数字、字母、符号、图形等信息。 8*8点阵屏的原理是通过行列扫描的方式&#xff0c;控制LED灯的亮灭&#xff0c;从而显示出所需的图案或…

使用MySQL建立外键约束时,报错3780的问题分析,和解决办法

今天在用语句给两个表建立外键约束时&#xff0c;报了3780的错误–具体描述如下&#xff1a; 大概意思就是或说&#xff0c;主表和从表的create_use 和 user_id 两个字段这不兼容 经过一顿分析之后发现&#xff0c;是因为这两个表的这两列数据类型不一样 解决办法–修改表中…

毫米波雷达4D点云生成(基于实测数据)

本期文章分享TI毫米波雷达实测4D点云生成的代码&#xff0c;包含距离、速度、水平角度、俯仰角度&#xff0c;可用于日常学习。 处理流程包含&#xff1a;数据读取和解析、MTI、距离估计、速度估计、非相干累积、2D-CFAR、水平角估计、俯仰角估计、点云生成、坐标转换等内容。…

【大数据Hive】hive 行列转换使用详解

目录 一、前言 二、使用场景介绍 2.1 使用场景1 2.2 使用场景2 三、多行转多列 3.1 case when 函数 语法一 语法二 操作演示 3.2 多行转多列操作演示 四、多行转单列 4.1 concat函数 语法 4.2 concat_ws函数 语法 4.3 collect_list函数 语法 4.4 collect_set函…

数据结构之二叉树的性质与存储结构

数据结构之二叉树的性质与存储结构 1、二叉树的性质2、二叉树的存储结构 数据结构是程序设计的重要基础&#xff0c;它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发&#xff0c;分析和研究计算机加工的数据的特性&#xff0c;…

谁说知识库都是英文的 今天就来一个中文版的

1.安装 1.1创建目录 mkdir -p /opt/trilium-cn cd /opt/trilium-cn 1.2.编写docker-compose.yml文件 version: 3 services:trilium-cn:image: nriver/trilium-cnrestart: alwaysports:- "10012:8080"volumes:# 把同文件夹下的 trilium-data 目录映射到容器内- /opt…