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 备份分支内容: 选中分支, 新建 分支,避免后续因为操作不当,导…...
 
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
 
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
 
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
 
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
 
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
 
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

