使用docker-compose 部署 MySQL8.0

2023-09-12 22:09:14

一、拉取MySQL镜像

我这里使用的是MySQL8.0.18,可以自行选择需要的版本。

docker pull mysql:8.0.18

二、创建挂载目录

mkdir -p /home/docker/mysql8/log
mkdir -p /home/docker/mysql8/data
mkdir -p /home/docker/mysql8/conf.d

三、添加配置文件my.cnf (没有特殊需求可以跳过)

这里需要给MySQL做点自定义的配置,比如时区字符编码等。

vi /home/docker/mysql8/conf.d/my.cnf
###### [client]配置模块 ######
[client]
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock

###### [mysql]配置模块 ######
[mysql]
# 设置MySQL客户端默认字符集
default-character-set=utf8mb4
socket=/var/lib/mysql/mysql.sock

###### [mysqld]配置模块 ######
[mysqld]
port=3306
user=mysql
# 设置sql模式 sql_mode模式引起的分组查询出现*this is incompatible with sql_mode=only_full_group_by,这里最好剔除ONLY_FULL_GROUP_BY
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id = 1

# MySQL8 的密码认证插件 如果不设置低版本navicat无法连接
default_authentication_plugin=mysql_native_password

# 禁用符号链接以防止各种安全风险
symbolic-links=0

# 允许最大连接数
max_connections=1000

# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8mb4

# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names=0
max_allowed_packet=16M 

# 设置时区
default-time_zone='+8:00'

四、编写 docker-compose.yml 文件

version: '3'
services:
  mysql: # 服务名称
    image: mysql:8.0.18 # 或其它mysql版本
    container_name: mysql8 # 容器名称
    environment:
      - MYSQL_ROOT_PASSWORD=123456 # root用户密码
#      - TZ=Asia/Shanghai # 设置容器时区 我这里通过下面挂载方式同步的宿主机时区和时间了,这里忽略
    volumes:
      - /home/docker/mysql8/log:/var/log/mysql # 映射日志目录,宿主机:容器
      - /home/docker/mysql8/data:/var/lib/mysql # 映射数据目录,宿主机:容器
      - /home/docker/mysql8/conf.d:/etc/mysql/conf.d # 映射配置目录,宿主机:容器
      - /etc/localtime:/etc/localtime:ro # 让容器的时钟与宿主机时钟同步,避免时间的问题,ro是read only的意思,就是只读。
    ports:
      - 3306:3306 # 指定宿主机端口与容器端口映射关系,宿主机:容器
    restart: always # 容器随docker启动自启

五、启动容器

docker-compose -f docker-compose.yml up -d

六、运行后查看启动容器的情况

在这里插入图片描述

七、连接测试

以交互式命令进入容器,也可以使用navicat等客户端连接,因为我们使用Docker安装的MySQL是将内部3306端口映射到了宿主机3306端口,我们可以直接使用宿主机 IP:3306 就可以连接,无须开启远程访问。

docker exec -it 容器ID /bin/bash

使用MySQL自带客户端连接工具连接

mysql -h127.0.0.1 -uroot -p123456

在这里插入图片描述

更多推荐

mysql主从复制

为什么要搭建主从架构主库出现问题,可以快速切换到从库提供服务。读写分离,降低主库的访问压力。可以在从库中执行备份,以避免备份期间影响主库的服务。主从复制原理Master将数据变化记录到binlog。Slaver通过一个IO线程来拉取Master上的binlog,写到relaylog中。Slaver的Sql线程将rela

堆的介绍与堆的实现和调整

个人主页:Lei宝啊愿所有美好如期而遇目录​​堆的介绍:关于堆的实现及相关的其他问题:堆的初始化:堆的销毁:插入建堆:堆向上调整:交换两个节点的值:堆向下调整:删除根节点:求堆顶数据:打印堆的每一个节点的值:堆排序:堆的节点数量:判断堆是否为空:创建一个多数据文件:TopK问题(综合):向上/向下调整建堆哪个时间复杂度

24 DRF详细学习篇章一|Requests|Responses|View|Routers

文章目录快速入门你可能搞混的知识重写preform_与重写saveRequests请求原本的Django的request(⭐).data(⭐⭐⭐).query_params(⭐⭐⭐).parsers(⭐).accepted_renderer(⭐⭐).accepted_media_type(⭐⭐).user(⭐⭐⭐).a

Mybatis学习笔记5 面向接口CRUD练习

Mybatis学习笔记4用javassist动态实现DAO接口基于接口的CRUD_biubiubiu0706的博客-CSDN博客新建项目大致目录结构核心配置文件日志配置文件,只需要引入logback依赖配置文件名为logback.xml即可<?xmlversion="1.0"encoding="UTF-8"?><con

【数据结构】LinkedList与链表

文章目录1.ArrayList的缺陷2.链表2.1链表的概念及结构2.2链表的实现1.链表的功能2.初始化链表3.实现功能接口3.1头插添加元素3.2尾插法添加新元素3.3找到下标的前驱节点3.4指定位置插入元素3.5指定元素是否存在3.6找到指定元素的前驱节点3.7删除指定节点3.8删除所有元素为key的节点3.9链

智慧养殖:浅谈视频监控与AI智能识别技术助力奶牛高效、智慧养殖

一、方案背景随着科技的飞速发展,智能化养殖逐渐成为现代畜牧业的发展趋势。人工智能技术、物联网、视频技术、云计算、大数据等新兴技术,正在为奶牛养殖业带来全新的变革。越来越多的牧场、养殖场开始运用新技术来进行智能监管、提高生产效率、降低生产成本,助力饲养成本高的养殖业,向数字化、智能化、无人化发展方向转型。二、方案概述TS

计算机硬件设备和网络硬件设备

计算机硬件设备计算机硬件设备是指构成计算机系统的各种实体部件,包括以下几类常见设备:1、中央处理器(CentralProcessingUnit,CPU)2、内存(RandomAccessMemory,RAM)3、硬盘驱动器(HardDiskDrive,HDD)4、显卡(GraphicsProcessingUnit,GP

uni-app 之 vue位置怎样设置

vue位置怎样设置VUE是一款流行的JavaScript框架,可以构建动态用户界面。在VUE中,位置的设置是非常重要的,因为它会影响到页面元素的布局。下面将详细介绍VUE中位置设置的基本概念以及如何使用VUE进行位置设置。在VUE中,位置设置一般使用CSS的position属性来实现。position属性有四个属性值:

Spring Boot魔法:简化Java应用的开发与部署

文章目录什么是SpringBoot?1.自动配置(Auto-Configuration)2.独立运行(Standalone)3.生产就绪(ProductionReady)4.大量的起步依赖(StarterDependencies)SpringBoot的魔法1.起步依赖(StarterDependencies)2.自动配

CMake:测试的其他补充(重要)

CMake:测试的其他补充(重要)导言预期测试失败项目结构CMakeLists.txt相关源码输出结果使用超时测试运行时间过长的测试项目结构CMakeLists.txt相关源码输出结果并行测试项目结构CMakeLists.txt相关源码输出结果运行测试子集项目结构CMakeLists.txt相关源码输出结果使用测试固件

uniapp实现大气质量指标图(app端小程序端均支持,app-nvue不支持画布)

效果图如下:思路:1.首先我想到的就是使用图标库echarts或ucharts,可是找了找没有找到类似的。2.其次我就想用画布来实现这个效果,直接上手。(app-vue和小程序均可以实现,但是在app-nvue页面不支持画布,尝试了一下再nvue页面直接导致程序闪退)3.后来,使用手动创建一个竖向的类似效果。注意:1.

热文推荐