当前位置: 首页 > news >正文

docker 部署 mysql 9.0.1

docker 如何部署 mysql 9 ,请看下面步骤:

1. 先看 mysql 官网

在这里插入图片描述

先点进去 8 版本的 Reference Manual 。

在这里插入图片描述
选择 9.0 版本的。

在这里插入图片描述

点到这里来看, 这里有一些基础的安装步骤,可以看一下。 - Basic Steps for MySQL Server Deployment with Docker。

在这里插入图片描述

有关使用 Docker 部署 MySQL Server 的更多主题,例如 服务器配置, 持久保存数据和配置, 服务器 错误日志和容器环境变量,请参阅 第 2.5.6.2 节 “有关使用 Docker 部署 MySQL 服务器的更多主题”。

在这里插入图片描述

docker run --name=mysql1 \
--mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf \
--mount type=bind,src=/path-on-host-machine/datadir,dst=/var/lib/mysql \
-d container-registry.oracle.com/mysql/community-server:tag

OK, 上面是官网的教程,接下来写上我自己的实操。

1. 首先我们要做下载 mysql 9.0.1 的镜像

docker pull mysql:9.0.1

2. 然后运行创建 mysql 容器

docker run -d \
--name mysql9 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
mysql:9.0.1

查看 mysql 是否正常启动:

docker ps

可以看到已经正常启动了。

在这里插入图片描述

3. 但我们的目标是要实现挂载mysql的 配置文件 到宿主机以便于修改 和 持久化 mysql 的数据。所以我们要先将 mysql 的 配置文件从容器中拷贝出来。

那么, mysql 9 的配置文件在哪呢?

我们从 dockerhub 仓库中可以看到 mysql 的配置文件在 /etc/mysql/my.cnf 。但是,你进去 mysql 9 的容器中会发现 这个路径找不到 my.cnf 文件。

在这里插入图片描述

其实 mysql 官网已经提到了, 在 /etc/my.cnf 。

在这里插入图片描述

OK,既然知道了配置文件的路径,那就拷贝出来。

先在宿主机中创建下面文件夹用于存放 mysql 9 的配置文件 以及 将来要存储 mysql 的数据目录。

mkdir -p /mydata/mysql/conf  /mydata/mysql/data

从 mysql 9 容器中拷贝配置文件出来:

docker cp mysql9:/etc/my.cnf:/mydata/mysql/conf

4. 删除 mysql 9 容器

docker stop mysql9
docker rm mysql9

5. 重新创建 mysql9 容器,并实现目录挂在。

docker run --name=mysql9 \
--mount type=bind,src=/mydata/mysql/conf/my.cnf,dst=/etc/my.cnf \ 
--mount type=bind,src=/mydata/mysql/data,dst=/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3306:3306 \
-d mysql:9.0.1

你知道这两种写法有什么不同吗?请参考这篇文章 - 《docker 的目录挂载的新语法》

–mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf
-v /path-on-host-machine/my.cnf:/etc/my.cnf

到此 docker 就成功安装了 mysql 9 了。

那下一步我们要做什么呢? 远程连接 mysql 。 没错,所以继续往下看。

6. 修改配置文件添加允许远程访问配置

编辑 /mydata/mysql/conf/my.cnf

在配置文件中找到 [mysqld] 部分,添加下面属性

bind-address = 0.0.0.0

这会允许 MySQL 接受来自任何 IP 地址的连接。

修改完成后,需要重启 mysql 容器。

docker restart mysql9

7. 登录到 mysql 中赋予新用户远程访问的权限

注意:下面这段是旧 mysql 的用法了。在 mysql 9 中不能使用这种用法了。

# 1. 如果已经有现有用户,修改权限:
GRANT ALL PRIVILEGES ON database.* TO 'root'@'%' IDENTIFIED BY 'root';FLUSH PRIVILEGES;

上面这种写法在 mysql 9 中运行会报如下错误:

mysql>  GRANT ALL PRIVILEGES ON mysql.* TO 'root'@'%' IDENTIFIED BY 'root';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY 'root'' at line 1

在 MySQL 8.0 和 9.0 版本中,GRANT 语句的语法发生了一些变化,尤其是涉及到用户创建和权限赋予的部分。特别地,MySQL 8.0+ 版本不允许在 GRANT 语句中直接使用 IDENTIFIED BY 来设置密码,密码设置应该通过 CREATE USER 或 ALTER USER 语句进行。

这个错误是因为在 MySQL 9.0.1 中,我们试图在 GRANT 语句中使用 IDENTIFIED BY,而 MySQL 9.0.1 的语法不允许这样做。

正确的做法:

# 1. 首先使用 CREATE USER 语句创建一个新用户,并设置密码:
CREATE USER 'username'@'%' IDENTIFIED BY 'password';# 2. 然后使用 GRANT 语句为该用户授予权限:
GRANT ALL PRIVILEGES ON mysql.* TO 'username'@'%';# 3. 最后,执行 FLUSH PRIVILEGES 使权限立即生效:
FLUSH PRIVILEGES;

不过我们已经有 root 用户了,不用去创建新用户了,在 mysql 库 下的 user 表可以查看到已有用户。

所以直接执行下面语句就行:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

然后再用 Navicate 去连接,已经可以正常连接上了。

在这里插入图片描述

到此本教程已结束。


扩展:

更多 docker 教程可以参考这个人的文章 - Docker 教程(图文讲解),整理的挺好的。

相关文章:

docker 部署 mysql 9.0.1

docker 如何部署 mysql 9 ,请看下面步骤: 1. 先看 mysql 官网 先点进去 8 版本的 Reference Manual 。 选择 9.0 版本的。 点到这里来看, 这里有一些基础的安装步骤,可以看一下。 - Basic Steps for MySQL Server Deployment wit…...

关于小标join大表,操作不当会导致笛卡尔积,数据倾斜

以前总是说笛卡尔积,笛卡尔积,没碰到过,今天在跑流程调度时,就碰到笛卡尔积了,本来,就是查询几个编码的信息,然后由于使用的是with tmp as,没使用where in ,所以跑的很慢 现象&#…...

SpringMVC全局异常处理

一、Java中的异常 定义:异常是程序在运行过程中出现的一些错误,使用面向对象思想把这些错误用类来描述,那么一旦产生一个错误,即创建某一个错误的对象,这个对象就是异常对象。 类型: 声明异常&#xff1…...

出海服务器可以用国内云防护吗

随着企业国际化进程的加速,越来越多的企业选择将业务部署到海外服务器上,以便更贴近国际市场。然而,海外服务器也面临着来自全球各地的安全威胁和网络攻击。当出海服务器遭受攻击时,是否可以借助国内的云服务器来进行有效的防护呢…...

从零开始的使用SpringBoot和WebSocket打造实时共享文档应用

在现代应用中,实时协作已经成为了非常重要的功能,尤其是在文档编辑、聊天系统和在线编程等场景中。通过实时共享文档,多个用户可以同时对同一份文档进行编辑,并能看到其他人的编辑内容。这种功能广泛应用于 Google Docs、Notion 等…...

Ant Design Pro实战--day01

下载nvm https://nvm.uihtm.com/nvm-1.1.12-setup.zip 下载node.js 16.16.0 //非此版本会报错 nvm install 16.16.0 安装Ant Design pro //安装脚手架 npm i ant-design/pro-cli -g //下载项目 pro create myapp //选择版本 simple 安装依赖 npm install 启动umi yarn add u…...

pcl点云库离线版本构建

某天在摸鱼的小邓接到任务需要进行点云数据的去噪,在万能的github中发现如下pcl库非常好使,so有了此, 1.下载vs2017连接如下: ed2k://|file|mu_visual_studio_community_2017_version_15.1_x86_x64_10254689.exe|1037144|12F5C1…...

字节高频算法面试题:小于 n 的最大数

问题描述(感觉n的位数需要大于等于2,因为n的位数1的话会有点问题,“且无重复”是指nums中存在重复,但是最后返回的小于n最大数是可以重复使用nums中的元素的): 思路: 先对nums倒序排序 暴力回…...

ElasticSearch常见面试题汇总

一、ElasticSearch基础: 1、什么是Elasticsearch: Elasticsearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎,每个字段都被索引并可被搜索,可以快速存储、搜索、分析海量的数据。 全文检索是指对每一个词建立一个索引…...

Spring Boot如何实现防盗链

一、什么是盗链 盗链是个什么操作,看一下百度给出的解释:盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的…...

工作中常用springboot启动后执行的方法

前言: 工作中难免会遇到一些,程序启动之后需要提前执行的需求。 例如: 初始化缓存:在启动时加载必要的缓存数据。定时任务创建或启动:程序启动后创建或启动定时任务。程序启动完成通知:程序启动完成后通…...

力扣-图论-3【算法学习day.53】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...

Linux上的C语言编程实践

说明: 这是个人对该在Linux平台上的C语言学习网站笨办法学C上的每一个练习章节附加题的解析和回答 ex1: 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后运行它看看发生了什么。 vim ex1.c打开 ex1.c 文件。假如我们删除 return 0…...

芝法酱学习笔记(1.3)——SpringBoot+mybatis plus+atomikos实现多数据源事务

一、前言 1.1 业务需求 之前我们在讲解注册和登录的时候,有一个重要的技术点忽略了过去。那就是多数据源的事务问题。 按照我们的业务需求,monitor服务可能涉及同时对监控中心数据库和企业中心数据库进行操作,而我们希望这样的操作在一个事…...

【计算机网络】实验12:网际控制报文协议ICMP的应用

实验12 网际控制报文协议ICMP的应用 一、实验目的 验证ping命令和tracert命令的工作原理。 二、实验环境 Cisco Packet Tracer模拟器 三、实验过程 1.构建网络拓扑并进行信息标注,将所需要配置的IP地址写在对应的主机或者路由器旁边,如图1所示。 图…...

收缩 tempdb 数据库

1、 本文内容 注解使用 ALTER DATABASE 命令使用 DBCC SHRINKDATABASE 命令使用 DBCC SHRINKFILE 命令运行收缩操作时出现错误 8909 适用于: SQL ServerAzure SQL 托管实例 本文讨论可用于收缩 SQL Server 中 tempdb 数据库的各种方法。 可以使用下列任一方法来…...

kubesphere搭建 postgres15

创建configMap POSTGRES_PASSWORD数据库密码 PGDATA数据目录 创建【有状态副本集】工作负载 1.创建基本信息 2.容器组设置 配置环境变量 3.存储设置 完成之后点击下一步 配置服务 创建服务 配置基本信息 配置服务信息 外部访问选择nodePort,然后点击…...

解决npm问题用到的资源,错误原因和方法

资源: 1.node版本管理工具nvm: 下载地址:https://nvm.uihtm.com/nvm-1.1.12-setup.zip 使用方法:https://nvm.uihtm.com/ 2.node各版本: https://nodejs.org/en/about/previous-releases 3.nodejs: 下载地址:https://…...

【uni-app 微信小程序】新版本发布提示用户进行更新

知识准备 uni.getUpdateManager文档介绍 不支持APP与H5,所以在使用的时候要做好平台类型的判断,如何判断,参考条件编译处理多端差异 代码参考 export const updateApp () > {const updateManager uni.getUpdateManager()updateManag…...

Redis性能优化18招

Redis性能优化的18招 目录 前言选择合适的数据结构避免使用过大的key和value[使用Redis Pipeline](#使用Redis Pipeline)控制连接数量合理使用过期策略使用Redis集群充分利用内存优化使用Lua脚本监控与调优避免热点key使用压缩使用Geo位置功能控制数据的持久化尽量减少事务使…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线, n r n_r nr​ 根接收天线的 MIMO 系…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...