Docker 安装 | 部署MySQL 8.x 初始设置

news2025/1/16 2:38:42

1、准备工作

如果不想看前面的废话请直接右边目录跳到 运行容器
默认你已经有 docker 环境。
Windows 推荐 Docker Desktop (下载地址)并基于 WSL2 运行 Docker 环境
mac 推荐 Orbstack (下载地址)(这个很节省资源,尤其对于 16GB 内存的用户,个人用户免费,也支持 K8S,更厉害的是,随便创建 Linux 虚拟机数量,不需要再安装别的虚拟机软件再去找一个 iso 镜像文件安装 Linux 系统)
本人以 mac 环境演示

Docker Desktop (不过我已经弃用这个了)
Orbstack

简单放两张图给大家看看这个 Orbstack,Docker Desktop 相信很多同学都有。

在这里插入图片描述

在这里插入图片描述

如果这个虚拟机再搞个克隆功能就好了,把一台的基础环境搭建好之后克隆多台再配置差异化的东西,就非常快了。

2、正题开始

2.1、寻找镜像

  1. 直接使用 docker search 命令搜索 MySQL 的镜像
    在这里插入图片描述
    如果安装那个 mariadb 其实也是一样的。引用亚马逊云关于 MySQL 与 MariaDB 的区别链接:

MariaDB 是 MySQL 的修改版本。在 MySQL 被 Oracle 公司收购后,出于许可和分发方面的问题,MySQL 的原始开发团队制作了 MariaDB。自收购以来,MySQL 和 MariaDB 经历了不同的发展。但是,MariaDB 采用 MySQL 的数据和表定义文件,还使用相同的客户端协议、客户端 API、端口和套接字。这是为了让 MySQL 用户能够轻松切换到 MariaDB。

  1. 使用 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、可能遇到的问题

  1. 如果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'; 
  1. 如果只允许本机访问(比如你就是本地玩玩,就设置这个),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 就安装完成了。

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

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

相关文章

C++之函数提高(HM)

目录 1.函数默认参数(缺省参数) 2.占位参数 3.函数重载 4.类和对象--封装 (1)圆类: (2)访问权限 (3)struct&&class (4)立方体类的…

适用于车载设备无钥匙进入系统汽车用晶振FA-238A

汽车用晶振FA-238A是一款适用于车载设备无钥匙进入系统的耐高温晶振。汽车用晶振FA-238A是爱普生推出一的款MHz表贴式晶体单元,具有很好的预率性能,符合AEC-0200标准,其封装尺寸仅为3.2x2.5x0.7mm,工作温度范围在-40℃~125℃之间&…

Linux云计算之网络基础9——园区网络架构项目

要求构建大型园区网络架构,方案如下: 园区A 园区c 公司B 要求: 1、A公司园区网络 一台汇聚层三层交换机,两台接入层二层交换机。 出口有一台路由器。 2、A园区有五台服务器。 分别为两台 WEB 服务器,…

Spring Boot Mockito (三)

Spring Boot Mockito (三) 这篇文章主要是讲解Spring boot 与 Mockito 集成测试。 前期项目配置及依赖可以查看 Spring Boot Mockito (二) - DataJpaTest Spring Boot Mockito (一) - WebMvcTest Tag("Integration") SpringBootTest // TestMethodOrder(MethodOr…

分布式系统架构中的相关概念

1.1、衡量网站的性能指标 响应时间:指执行一个请求从开始到最后收到响应数据所花费的总体时间。并发数:指系统同时能处理的请求数量。 并发连接数:指的是客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器连接的总TCP数量请…

MySQL 主从复制架构搭建及其原理

前言 系统的性能瓶颈一般出现在数据库上,以 mysql 为例,如果存在高并发的写请求,势必会有锁表,锁数据行的情况发生,这时候如果有读请求刚好访问到被锁的数据,那么读请求会阻塞,直到写请求处理完…

ctypes 封装c语言

一&#xff0c;python与C类型对应关系 最左边一列的ctypes type&#xff0c;以替代C库中的各种类型。 二&#xff0c;不带参数的调用 1&#xff0c;target.c #include <stdio.h>void hello_world(){printf("hello downey!!\r\n"); } 2&#xff0c;执行命令…

CKA 基础操作教程(二)

Kubernetes Deployment 理论学习 Kubernetes Deployment &#xff08;部署&#xff09;是一种 Kubernetes 资源对象&#xff0c;用于定义和管理容器化应用程序的部署和更新。Deployment 提供了一种声明性的方式来定义应用程序的期望状态&#xff0c;并负责确保所需数量的 Pod…

【简单讲解下Tauri】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Qt | Qt 的重要文件简介(推荐)

一、项目文件(pro 文件)及其语法 1、项目文件(pro 文件)的作用是列举项目中的源文件, 2、pro 文件的语法形式为:“变量 操作符 值”,比如 QT += widgets,多个值之间使用空格分开。 3、pro 文件的注释:从“#”开始,直至本行结束。 4、pro 文件的操作符见下表 5、pro 文…

Filter Listener Interceptor

文章目录 第一章 Filter1. 目标2. 内容讲解2.1 Filter的概念2.2 Filter的作用2.3 Filter的入门案例2.3.1 案例目标2.3.2 代码实现2.3.2.1 创建ServletDemo012.3.2.2 创建EncodingFilter 2.4 Filter的生命周期2.4.1 回顾Servlet生命周期2.4.1.1 Servlet的创建时机2.4.1.2 Servle…

JSON的定义和基本使用

1、JSON的特点: JSON是一种轻量级的数据交换格式&#xff0c;是由字符串化的键值对构成。基于网络的前后端通信&#xff0c;数据在服务端和客户端之间进行传输&#xff0c;采用的就是JSON的格式来进行交互。JSON采用完全独立于语言的文本格式&#xff0c;JSON的数据格式完全独…

【VSCode】修改插件地址

不想放在原始C盘下面C:\Users\{用户}\.vscode\extensions为了后续存储空间考虑&#xff0c;想通过添加环境变量创建名为VSCODE_EXTENSIONS的环境变量&#xff0c;内容指向vs Code扩展所在目录即可 直接配置环境变量&#xff0c;不要在有空格的文件夹下面 变量名称&#xff1a;…

C语言要点细细梳理——番外:运算符优先级

C语言中的运算符优先级决定了在没有括号的情况下&#xff0c;表达式中的各个部分应如何求值。这个优先级是固定的&#xff0c;并且遵循一定的规则。当运算符的优先级相同时&#xff0c;运算的方向&#xff08;从左到右或从右到左&#xff09;则称为运算符的结合性。 下面是一个…

中间件漏洞!!!

上次好像记得讲过了框架漏洞&#xff0c;&#xff08;weblogic不是&#xff09;那么&#xff0c;今天我们就来讲一些中间件的漏洞 1.Apache解析漏洞 众所周知&#xff0c;Apache是一个非常出名的中间件&#xff0c;本来呢&#xff0c;他是不存在漏洞的&#xff0c;但是如果用…

OpenAI推出VoiceEngine语音引擎技术:让声音更逼真,更富情感

继openAI GPT3.5免登录后&#xff0c;OpenAI最近推出了一款名为VoiceEngine的语音引擎技术&#xff0c;这技术能通过简单的文本输入和15秒的音频样本&#xff0c;就能生成跟原始说话者声音一模一样的语音&#xff0c;不仅逼真&#xff0c;还充满了情感。 这VoiceEngine技术&am…

三、keepalived双机热备

一、双机热备概述 1、为什么需要双机热备&#xff1a; 双机热备主要为了解决服务器的单点故障问题。 在主机 MASTER 宕机之后可以马上切换到备选服务器 BACKUP。 服务器规划&#xff1a; 2、克隆产生web01服务器&#xff1a; (1) 基于LNMP克隆生成Web01服务器&#xff1a; (…

[计算机知识] TCP/IP网络模型、MySQL的结构

TCP/IP网络模型 应用层 给用户提供应用功能&#xff0c;如HTTP, DNS 应用层处于用户态&#xff0c;传输层及以下处于内核态 传输层 给应用层提供网络支持&#xff0c;如TCP, UDP TCP提供稳定、面向连接的网络传输协议 应用层的数据可能会太大&#xff0c;就需要进行拆分…

深入浅出 -- 系统架构之分布式架构

​​​​​​分布式架构&#xff1a; 根据业务功能对系统做拆分&#xff0c;每个业务功能模块作为独立项目开发&#xff0c;称为一个服务。 当垂直应用越来越多时&#xff0c;应用之间的交互不可避免&#xff0c;可将共用的基础服务或核心模块抽取出来作为独立服务&#xff0c…

与机器对话:ChatGPT 和 AI 语言模型的奇妙故事

原文&#xff1a;Talking to Machines: The Fascinating Story of ChatGPT and AI Language Models 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 从 ELIZA 到 ChatGPT&#xff1a;会话式人工智能的简史 会话式人工智能是人工智能&#xff08;AI&#xff09;的一个分…