Docker 安装 | 部署MySQL 8.x 初始设置
1、准备工作
如果不想看前面的废话请直接右边目录跳到
运行容器
处
默认你已经有 docker 环境。
Windows 推荐 Docker Desktop (下载地址)并基于 WSL2 运行 Docker 环境
mac 推荐 Orbstack (下载地址)(这个很节省资源,尤其对于 16GB 内存的用户,个人用户免费,也支持 K8S,更厉害的是,随便创建 Linux 虚拟机数量,不需要再安装别的虚拟机软件再去找一个 iso 镜像文件安装 Linux 系统)
本人以 mac 环境演示
简单放两张图给大家看看这个 Orbstack,Docker Desktop 相信很多同学都有。
如果这个虚拟机再搞个克隆功能就好了,把一台的基础环境搭建好之后克隆多台再配置差异化的东西,就非常快了。
2、正题开始
2.1、寻找镜像
- 直接使用
docker search
命令搜索 MySQL 的镜像
如果安装那个mariadb
其实也是一样的。引用亚马逊云关于 MySQL 与 MariaDB 的区别链接:
MariaDB 是 MySQL 的修改版本。在 MySQL 被 Oracle 公司收购后,出于许可和分发方面的问题,MySQL 的原始开发团队制作了 MariaDB。自收购以来,MySQL 和 MariaDB 经历了不同的发展。但是,MariaDB 采用 MySQL 的数据和表定义文件,还使用相同的客户端协议、客户端 API、端口和套接字。这是为了让 MySQL 用户能够轻松切换到 MariaDB。
- 使用 DockerHub 地址查找
直接使用
docker pull mysql
的话默认会拉取最新的镜像,即: mysql:latest
2.2、拉取镜像
废话不多说了,我这里以 docker pull mysql:8.3.0-oracle
为例(不知道用什么镜像,推荐直接用 Oracle 的即可)
docker pull mysql:8.3.0-oracle
2.3、运行容器
使用以下命令运行 MySQL 容器
docker run -p 3307:3306 --name mysql8 --restart=always --privileged=true \
-v /Users/lyk/docker-test/mysql/log:/var/log/mysql \
-v /Users/lyk/docker-test/mysql/data:/var/lib/mysql \
-v /Users/lyk/docker-test/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.36-oracle
注意:不要删掉后面的 \ 号
如果你是基于 WSL 的 Docker 环境,宿主机的目录你可以放到你真实电脑,也可以放到 WSL Linux 子系统中的目录(比如 /opt/docker/mysql 这种),到时候通过别的终端连接 WSL 子系统进行修改即可,我个人建议直接映射到 WSL 子系统中的目录去,因为 Windows 的目录结构跟 Linux 的目录映射有时候一些容器会出一些问题如果不提前拉取镜像,运行容器的时候发现没有这个镜像也会自动去拉取下来再运行。
因为我的 3306 端口用完了,所以宿主机我映射到了3307。目录我就随便搞一个 docker-test测试而已,大家看需求放好目录。
参数说明:
参数 | 格式 | 说明 |
---|---|---|
-p | 宿主机端口 : 容器端口 | 将容器内的端口与宿主机端口映射,使得直接访问宿主机的端口就可以访问到容器 |
–name | –name xxx | 给容器起一个名字 |
–restart | –restart = xxx (可选:no (默认值),on-failure ,always ) | 容器重启策略(比如运行失败了,会尝试重启;又比如每次重启电脑都自动启动容器) |
–privileged | –privileged=xxx (可选 false (默认值)、 true ) | 值为 true 时,授予容器内的进程全部的特权。 当容器运行在特权模式下时,容器内的进程将拥有一些特权,例如: 可以访问主机的所有设备和文件系统。 可以进行网络配置和管理,包括创建和修改网络接口和路由表 |
-v | -v 宿主机目录 : 容器内目录 (此时是目录映射或者叫做目录挂载);或者直接: -v 宿主机目录 (此时是数据卷挂载) | 目录挂载:容器内的文件与宿主机的目录的文件直接一一映射,即:在宿主机修改文件,容器内的文件直接生效,例如做 my.cnf 配置文件,放在宿主机目录并且映射到容器中,我只需要修改宿主机的文件即可完成对容器内的 MySQL 配置修改 |
-e | -e 参数名=参数值 | 用于在容器启动的时候往容器中设置一些初始值,例如上述命令中就是给 MySQL 容器设置初始的 root 用户密码是 root,注意,参数名必须是有效的,否则报错,不能说 MySQL 本身没有 AAA 这个参数你自己随便搞一个进去,你自己运行的程序除外(比如你自己跑一些 Spring Boot程序你当然可以自己设置一些自定义参数) |
-d | 加上 -d 参数之后容器会静默在后台启动,也就是不会在你的终端窗口打印信息,类似跑 Java 程序的 nohup java -jar xxx.jar & 命令 |
此处放一张上面提到的目录挂载与数据卷挂载的区别,回答来自 ChatGPT:
将上面命令在 shell 窗口中运行完之后就看到我们的容器启动起来了
说明:忘记在映射目录加上用户目录了,我是放在用户目录,大家忽略上图的/docker-test 与 上面命令提到的 /Users/lyk/docker-test 即可。
运行成功以后会显示容器的 id(唯一标志)
通过 docker ps
查看运行中的容器:
2.4、Navicat 连接
测试连接连通性
2.5、完事
如果能正常连接,那就没什么问题了。如果遇到问题,参考下面的可能遇到的问题。
3、可能遇到的问题
- 如果Navicat报错代码2059,则进行以下修改 %是针对所有用户,即:开启
远程访问
,
进入容器
docker exec -it mysql8 bash
注意 如果你使用的是alpine类型的镜像,那么命令都是以
sh
结尾(所有 alpine 镜像都是),例如:docker exec -it mysql8 sh
容器内执行以下命令(分两种,可以允许远程访问 or 本地访问):
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
- 如果只允许
本机
访问(比如你就是本地玩玩,就设置这个),localhost
只允许本机访问
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
执行完记得刷新权限:
FLUSH PRIVILEGES;
至此,我们的 MySQL 就安装完成了。
相关文章:

Docker 安装 | 部署MySQL 8.x 初始设置
1、准备工作 如果不想看前面的废话请直接右边目录跳到 运行容器 处 默认你已经有 docker 环境。 Windows 推荐 Docker Desktop (下载地址)并基于 WSL2 运行 Docker 环境 mac 推荐 Orbstack (下载地址)(这个很节省资源&…...
linux三剑客之流编辑器sed
sed(stream editor)是Linux和Unix系统中一个非常强大的文本处理工具。它主要用于对文本数据进行过滤和转换。sed 可以在不打开文件的情况下,直接对输入流进行操作,并且可以将结果输出到标准输出或文件。 基本语法: s…...

【Android Studio】上位机-安卓系统手机-蓝牙调试助手
【Android Studio】上位机-安卓系统手机-蓝牙调试助手 文章目录 前言AS官网一、手机配置二、移植工程三、配置四、BUG五、Java语言总结 前言 提示:以下是本篇文章正文内容,下面案例可供参考 AS官网 AS官网 一、手机配置 Android Studio 下真机调试 …...

怎样把学浪购买的课程下载下来
如何把学浪已购买的课程下载下来?这里就教大家一个方法,利用一个工具轻轻松松把视频下载下来 这个工具我打包成压缩包了,有需要的自己取一下 链接:https://pan.baidu.com/s/1y7vcqILToULrYApxfEzj_Q?pwdkqvj 提取码:kqvj --来自百度网盘超级会员V1…...

SD-WAN如何解决更有性价比地跨境网络问题
云桥通SD-WAN利用智能路由和负载均衡技术,优化数据传输路径,提高网络性能和可靠性。这意味着数据在跨国传输时可以更快到达目的地,减少延迟和丢包率。跨境SD-WAN提高了网络连接速度和质量,使用户能够更快地访问跨国业务所需的资源…...

第15章 File类与IO流
一 java.io.File类的使用 1.1 概述 File类及本章下的各种流,都定义在java.io包下。一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录(俗称文件夹),与平台无关。(体会万事万物皆对象)File 能新…...

C语言基础语法-教案16(从小白到劝退之结构体初阶)
最近给大家争取到一个 深夜福利 保证你在深夜手机刷到 嘎嘎香~ 那就是 大流量卡 缺点:月租太便宜 185GB~ 100分钟通话时长~ 长期套餐~ 畅想自由的气息 流量自由的同时还拥有超长通话,而且免费领取。 名额有限,咱们废话不多说直接上…...

Linux:ip和ip协议的初步认识
文章目录 ip协议基本认识ip协议的报头网段划分ip的类型划分 ip协议基本认识 前面对于TCP的内容已经基本结束了,那么这也就意味着在传输层也已经结束了,那么下一步要进入的是的是网络层,网络层中也有很多种协议,这里主要进行解析的…...

Android12 简单的共享内存驱动实现 参考Ashmem
Android12 共享内存驱动实现 SOC:RK3568 system:Android12 概述: 1. 概述 Ashmem(Anonymous Shared Memory,Android 匿名共享内存),它基于 mmap 系统调用,可以让不同进程将同一段…...
物理安全和逻辑安全在信息安全中的重要作用
在信息时代,信息安全已经成为企业和个人不可或缺的重要组成部分。物理安全和逻辑安全作为信息安全的两大支柱,发挥着至关重要的作用。 什么是物理安全和逻辑安全? 物理安全是指通过技术手段,对计算机设备、网络设备、数据中心等…...
每日一题 --- 滑动窗口最大值[力扣][Go]
滑动窗口最大值 题目:239. 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1࿱…...
TensorBoard可视化+Confustion Matrix Drawing
for later~ 代码阅读 1. 加载trainset import argparse import logging import os import numpy as npimport torch from torch import distributed from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriterfrom backbones import get_…...

012——LED模块驱动开发(基于I.MX6uLL)
目录 一、 硬件原理图 二、 驱动程序 三、 应用程序 四、 Makefile 五、操作 一、 硬件原理图 又是非常经典的点灯环节 ,每次学新语言第一步都是hello world,拿到新板子或者学习新的操作系统,第一步就是点灯。 LED 的驱动方式࿰…...

基于springboot实现房屋租赁管理系统项目【项目源码+论文说明】计算机毕业设计
基于springboot实现房屋租赁系统演示 摘要 房屋是人类生活栖息的重要场所,随着城市中的流动人口的增多,人们对房屋租赁需求越来越高,为满足用户查询房屋、预约看房、房屋租赁的需求,特开发了本基于Spring Boot的房屋租赁系统。 …...

168.乐理基础-中古调式概述
如果到这五线谱还没记住还不认识的话去看102.五线谱-高音谱号与103.五线谱-低音谱号这两个里,这里面有五线谱对应的音名,对比着看 如果不认识调号去看112.五线谱的调号(一)、113.五线谱的调号(二)、114.快…...

【项目实战】【Docker】【Git】【Linux】部署V2rayA项目
今天着手了一个全新领域的项目,从完全没有头绪到成功运行,记录一下具体的部署流程 github项目链接V2rayA 一开始拿到以后完全没有抓手,去阅读了一下他的帮助文档 写着能用docker运行,就去下载了一个Docker配置了一下 拉取代码到…...

mac 切换 jdk
查看 mac 上都有哪些版本 /usr/libexec/java_home -V看准版本切换 按前缀切换 比如 export JAVA_HOME/usr/libexec/java_home -v 1.8这样会随机一个 1.8 的 如果想再确定一个比如 openjdk export JAVA_HOME/usr/libexec/java_home -v 1.8.0_292这个方式是临时的,…...
MD5加密返回32位密文字符串
前言: 项目中需要调用其他系统的 api 接口,接口使用的是按一定规则生成 MD5 密文作为签名来进行身份验证,本文仅记录 32 位 MD5 密文的生成方式,仅供参考。 什么是MD5 加密? MD5 加密是一种加密算法,MD5…...
npm常用命令技巧
NPM (Node Package Manager) 是 JavaScript 的包管理工具,广泛用于管理项目中的依赖。无论是前端项目还是Node.js后端项目,NPM 都扮演着重要的角色。本文将介绍 NPM 中常用的几个命令,并提供相应的代码示例。 1. 初始化项目:npm …...

intellij idea 使用git撤销(取消)commit
git撤销(取消) 未 push的 commit Git,选择分支后,右键 Undo Commit ,会把这个 commit 撤销。 git撤销(取消) 已经 push 的 commit 备份分支内容: 选中分支, 新建 分支,避免后续因为操作不当,导…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...