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 备份分支内容: 选中分支, 新建 分支,避免后续因为操作不当,导…...
lite-server实战:如何快速搭建Angular项目的热重载开发环境
lite-server实战:如何快速搭建Angular项目的热重载开发环境 【免费下载链接】lite-server Lightweight node server 项目地址: https://gitcode.com/gh_mirrors/li/lite-server 在现代前端开发中,快速的开发反馈循环至关重要。lite-server作为一款…...
智能访客系统(线上访客预约、线下访客机),提供从访客预约、身份核验、现场登记到联动(闸机、门禁、梯控、车牌识别停车场等出入口)通行的一站式智能化管理解决方案,实现访客全程可追溯、通行更便捷、管理更高效
智能访客系统技术方案第一章 系统概述1.1 项目背景随着智慧楼宇、智慧园区、智慧社区建设的深入推进,传统的访客管理模式已难以满足现代安全管理与高效通行的双重需求。传统人工登记方式存在效率低、数据易丢失、安全隐患大等问题。本方案基于智能访客系统ÿ…...
c++ Protobuf解决数据传输瓶颈面试精讲
1. 什么是 Protobuf?Protobuf(Protocol Buffers) 是一种轻量级的数据序列化协议,由 Google 开发。它可以用于结构化数据的序列化和反序列化,使得数据在不同系统之间进行传输和存储更加高效。与 XML 和 JSON 等常见的数据交换格式…...
医学影像分析新宠:Swin-Unet凭什么比传统U-Net更强?深入对比实验与避坑指南
医学影像分析新宠:Swin-Unet凭什么比传统U-Net更强?深入对比实验与避坑指南 在医学影像分析领域,图像分割技术一直是计算机辅助诊断的核心支柱。从早期基于阈值的简单分割到如今深度学习的复杂建模,这项技术正在经历从"看得见…...
在setting菜单里显示的有些字符 不正常,
比如时间 显示的不是正常字体,location 下面显示的字体也是不正常的。在setting菜单里显示的有些字符 不正常,比如时间 显示的不是正常字体,location 下面显示的字体也是不正常的。设置菜单(Settings)中出现字符显示异…...
为什么92%的AGI初创公司没有危机模拟演练?——泄露内部红队攻防报告(仅限本期读者)
第一章:AGI的公关与危机管理 2026奇点智能技术大会(https://ml-summit.org) 当通用人工智能系统首次在真实世界中触发大规模社会误读、监管质询或媒体风暴时,技术团队往往发现——最危险的漏洞不在模型权重里,而在沟通链路中。AGI的公关与危…...
保姆级教程:在UniApp Vue3项目中集成live-pusher,打造动态背景的趣味人脸活体检测
UniApp Vue3实战:用live-pusher打造沉浸式人脸活体检测体验 移动应用开发中,人脸活体检测已成为身份验证的核心环节。传统实现往往只关注功能实现,忽略了用户体验。本文将带你用UniApp和Vue3构建一个动态背景动作引导的趣味检测系统ÿ…...
TMS320F28335新手避坑指南:从零搭建CCS7.2项目到点亮第一个LED(附完整源码包)
TMS320F28335实战入门:CCS7.2环境搭建与LED控制全流程解析 第一次接触TMS320F28335这款经典DSP芯片时,面对CCS开发环境和复杂的项目配置,很多开发者都会经历从兴奋到困惑的过程。本文将以最简路径带你完成开发环境搭建、项目配置到第一个LED控…...
DeepSeek总结的PostgreSQL MVCC,逐字节解析
来源:https://boringsql.com/posts/postgresql-mvcc-byte-by-byte/ PostgreSQL MVCC,逐字节解析 2026-04-17 Radim Marek 你在一个 psql 会话中运行 SELECT * FROM orders,看到了 5000 万行。你的同事在另一个会话中同时运行相同的查询&a…...
用Python的statsmodels库做游程检验:从数据清洗到结果解读的完整实战
Python实战:用statsmodels玩转游程检验的7个关键场景 游程检验这个看似冷门的统计方法,在实际业务中能解决哪些棘手问题?当你的A/B测试结果看起来"不太对劲",当用户行为序列出现可疑模式,或者生产线上的质量…...

