【MySQL】:Linux 环境下 MySQL 使用全攻略

news2025/1/22 0:36:23

📃个人主页:island1314

🔥个人专栏:MySQL学习

⛺️  欢迎关注:👍点赞 👂🏽留言 😍收藏  💞 💞 💞


1. 背景 🚀

世界上主流数据库种类很多,有如下情况:

  1. SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。
  2. Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。
  3. MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电商,SNS,论坛。对简单的SQL处理效果好。
  4. PostgreSQL : 加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研究使用,可以免费使用,修改和分发。
  5. SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
  6. H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中

而我们这里主要用的就是 MySQL

2. MySQL 安装、卸载

2.1 MySQL 安装 -- 基于 Ubuntu

我这里是使用  Ubuntu 系统对 MySQL 进行的使用,大家需要在自己 Linux 上进行安装的可以下面内容

① 更新软件包列表

sudo apt update

② 安装 MySQL 服务器

# 查看可使用的安装包
sudo apt search mysql-server

接下来可以使用以下命令安装MySQL服务器:

# 安装最新版本
sudo apt install -y mysql-server
# 安装指定 8.0 版本
sudo apt install -y mysql-server-8.0

🔥 如果不加 -y 会在安装过程中,系统将提示你设置MySQL的root密码。我们需要确保密码容易记住,因为你将在以后需要用到它。 我们这里加了 -y 所以默认没有设置密码

③ 启动 MySQL 服务

安装完成后,MySQL服务会自动启动,未启动则使用以下命令启动MySQL服务:

sudo systemctl start mysql

然后我们这里是把 MySQL 设置为 开机自启动,就不用我们自己每次来调了

sudo systemctl enable mysql

④ 检查 MySQL 状态

sudo systemctl status mysql

至此,我们已经成功在线安装了MySQL服务器。

当前我们也可以用查看进程的方式来查看 当前 MySQL 是否成功安装

ps ajx | grep mysql

⑤ 登录 MySQL

首先,使用 root 用户登录到 MySQL。打开终端并输入以下命令:

sudo mysql -u root -p
  • 登录mysql,在默认安装时如果没有让我们设置密码,则直接回车就能登录成功

⑥ 更改 root 密码

# 设置密码 mysql8.0
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

# 刷新缓存
flush privileges;

⑦ 修改 MySQL 配置允许远程连接

编辑 MySQL 配置文件,通常在 /etc/mysql/mysql.conf.d/mysqld.cnf 或 /etc/mysql/my.cnf

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

🔥 找到 bind-address 和mysqlx-bind-address项,把127.0.0.1更改为 0.0.0.0 或注释掉这两行,以允许从任何 IP 地址连接。

bind-address = 0.0.0.0
mysqlx-bind-address     = 0.0.0.0
  • mysqlx-bind-address与 bind-address 的用途相似,均用于设定MySQL服务器的监听地址。
  • 不同之处在于,mysqlx-bind-address用于处理基于X Protocol的连接,而 bind-address 则关注于传统MySQL协议连接。

修改之后,保存后并退出编辑器后,重启 MySQL 服务以应用更改。

sudo systemctl restart mysql

⑧ 测试远程连接(自选) 
从另一台计算机上,尝试使用新设置的 root 用户和密码远程连接到 MySQL 服务器。

mysql -h [服务器IP地址] -u root -p

🔥 完成这些步骤后,root 用户应该能够从远程位置登录到 MySQL 服务器,并且密码也已设置完成 。请确保网络和防火墙设置允许远程连接到 MySQL 服务器(默认端口为 3306)。

2.2 MySQL 卸载 --- 不大建议

🔥 要在 Ubuntu 系统上彻底卸载 MySQL,您可以按照以下步骤操作。请注意,这将完全移除 MySQL,包括所有数据和配置文件。在进行这些操作之前,一定要备份之前的所有重要数据

① 停止 MySQL 服务

sudo systemctl stop mysql

② 卸载 MySQL 安装包

使用 apt-get 命令卸载 MySQL 服务器及其相关软件包。

sudo apt-get remove --purge mysql-server mysql-client mysql-common

③ 删除配置和数据文件

🔥 删除 MySQL 的配置文件和数据目录。这一步是必要的,因为 apt-get remove --purge 可能不会删除所有文件。

sudo rm -rf /etc/mysql /var/lib/mysql
sudo rm -rf /var/log/mysql

④ 删除 MySQL 用户 和 组

如果我们想要删除 MySQL 用户和组,可以执行以下命令:

sudo deluser mysql
sudo delgroup mysql

完成以上步骤后,MySQL 应该已经从您的系统中彻底卸载。在重新安装 MySQL 或安装不同版本的 MySQL 之前,确保系统已经清理干净。

  • 但是我这里还是不大建议删除重装,比如我今天就重装了一次,我先删干净了,但是再进行安装的时候,就会安装失败,如下:

  • 然后当我找了网上一系列教程之后,然后终于安装成功了,但是 MySQL 启动服务就报错了,真的会谢,错误如下:
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.

🔥 然后这个问题在网上那个时候又没找到一个靠谱的方案,然后就去找了一个大佬帮忙看看,大佬帮我看了好一会之后,还是操作不了,可能是我之前的一系列操作出现了啥问题,真的强烈建议不要看到网上教什么就直接输入什么了,至少先了解一下那个指令是啥起码,最后的最后还是老老实实的选择了重装系统血的教训 !!!

3. MySQL 介绍

3.1 连接服务器

mysql -h 127.0.0.1 -P 3306 -u root -p

注意:

  • 如果没有写 -h 127.0.0.1 默认是连接本地
  • 如果没有写 -P 3306 默认是连接3306端口号

补充一个指令 -- 清屏

mysql> system clear

3.2 什么是数据库 ?

站在 服务器 角度 来理解 MySQL

  1. mysql它是数据库服务的客户端
  2. mysqld它是数据库服务的服务器端
  3. mysql本质:基于C(mysql) S(mysqld)模式的一种网络服务

mysql 其实就是一套给我提供数据存取的服务的网络程序

  • 数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据 - 将来在磁盘上存储的一套
  • 数据库方案数据库服务 -- mysqld

🚀 存储数据用文件就可以了,为什么还要弄个数据库? 主要是因为 文件保存数据 有以下几个缺点

  1. 文件的安全性问题
  2. 文件不利于数据查询和管理
  3. 文件不利于存储海量数据
  4. 文件在程序中控制不方便

🔥 一般的文件确实提供了数据的存储功能,但是文件并没有提供非常好的数据管理能力(用户角度) (理解:按照内容进行字段性提取,都需要程序员自己去做,不大方便)

  • 为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。

而数据库的存储,用到了如下的存储介质:

  • 磁盘
  • 内存

数据库的水平是衡量一个程序员水平的重要指标。

数据库本质:对数据内容存储的一套解决方案你给我字段或者要求,我直接给你结果就行

3.3 服务器,数据库,表关系

  • 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
  • 为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。
  • 数据库服务器、数据库和表的关系如下:

3.4 MySQL 架构

💧 MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、Mac 和 Solaris 。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体系结构的一致性。

3.5 SQL 分类

其实主要的 SQL 指令操作,在这篇博客已经讲过了,大家可以看看 【MySQL学习】:关系数据库标准语言SQLicon-default.png?t=O83Ahttps://island.blog.csdn.net/article/details/141996493

  • DDL【data definition language】 数据定义语言,用来维护存储数据的结构
    • 代表指令: create, drop, alter
  • DML【data manipulation language】 数据操纵语言,用来对数据进行操作
    • 代表指令: insert,delete,update
  • DML 中又单独分了一个DQL,数据查询语言
    • 代表指令: select
  • DCL【Data Control Language】 数据控制语言,主要负责权限管理和事务
    • 代表指令: grant,revoke,commit

3.6 存储引擎

之前在这篇博客里面我们也谈过一些内容,感兴趣的朋友们可以看看

从 InnoDB 到 Memory:MySQL 存储引擎的多样性icon-default.png?t=O83Ahttps://island.blog.csdn.net/article/details/142349947

🥝 存储引擎

💢 存储引擎是:数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。

🥝 查看存储引擎

  • 强烈注意:在 MySQL 下,输入的一系列命令都需要打 分号,千万千万不要忘记
🥝 存储引擎对比

4. 数据库的操作

数据库的基本指令操作,在这篇文章基本都有讲过,我这里都是一些补充

【MySQL学习】:关系数据库标准语言SQLicon-default.png?t=O83Ahttps://island.blog.csdn.net/article/details/141996493

4.1 查看数据库

show databases;

-- 输出如下

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

那我们查看的这些数据库在哪呢,还记得我们 MySQL 的一系列配置文件嘛,它里面有个 datadir,如下:

创建的数据库会保存在 /var/lib/mysql 下

4.2 创建数据库

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]

create_specification:
	[DEFAULT] CHARACTER SET charset_name
	[DEFAULT] COLLATE collation_name

说明:

  • 大写的表示关键字
  • [] 是可选项
  • CHARACTER SET : 指定数据库采用的字符集
  • COLLATE  : 指定数据库字符集的校验规则

🔥 说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_ general_ ci,一般来说我们直接 create database 数据库名 就行了

补充一条指令 -- 显示创建语句

mysql> show create database learn1;
+----------+----------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                                                  |
+----------+----------------------------------------------------------------------------------------------------------------------------------+
| learn1   | CREATE DATABASE `learn1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+----------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

📚 说明:

  • MySQL 建议我们关键字使用大写,但是不是必须的。
  • 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
  • /*!40100 default… */ 这个不是注释,表示当前使用mysql版本大于4.01版本,就执行这句话

言归正传,回到我们之前的话题 创建的数据库会保存在 /var/lib/mysql 下

  1. 建立数据库,本质就是Linux下的一个目录
  2. 在数据库内建立表,本质就是在Linux下创建对应的文件即可!

理解 数据库 和 文件系统 的关联

  • 创建数据库:本质就是在Linux环境下MySQL特定的路径(数据路径)var/lib/mysql 创建一个目录。

所以什么叫 数据库 ?

🔥 那么就是上面看到的,在当前对应的数据路径 /var/lib/mysql 下,ls 所看到的这些文件和目录,然后这些数据库里面可以存取很多表,这就叫作数据库的表,我们的这套数据库文件并不是直接由程序员去手动修改这些文件,而是通过 MySQL 客户端然后直接去访问我们的 MySQL 服务(mysqld)

因此结论是:数据库本质其实也是文件!!!只不过这些文件并不是由程序员自己直接操作,而是由数据库服务帮我们进行操作,这个工作是谁做的? --> mysqld服务帮我们做的

4.3 字符集和校验规则

字符集是什么?

创建数据库的时候,有两个编码集

  • 数据库编码集 – 数据库未来存储数据--写入规则
  • 数据库校验集 – 支持数据库进行字段比较使用的编码,本质也是一种读取数据库中数据采用的编码格式--读取原则

数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的

存数据的时候用什么编码,取的时候就得用什么编码去取

查看系统默认字符集以及校验规则

show variables like 'character_set_database';
show variables like 'collation_database'

查看数据库支持的字符集

show charset;

字符集主要是控制用什么语言。比如utf8就可以使用中文。

查看数据库支持的字符集校验规则

show collation;
  • 校验规则使用 utf8_ general_ ci[不区分大小写]
  • 校验规则使用 utf8_ bin[区分大小写]

现在也知道创建数据库了,也知道编码和校验规则了。两个合并下面就可以创建出指定编码和校验规则的数据库了。

  • 就近原则:下面可以看到创建数据库没有指定,系统就用默认的。

如下就使用 gbk,不适用 utf8 了

create database d3 charset=gbk collate gbk_chinese_ci;

数据库配置文件中配置这个编码有什么意义呢?

  • 因为曾经在配置文件中设置过,所以会影响创建数据库时默认编码和校验规则,编码和校验规则是匹配的。

那问题又来了,今天为什么又要设置数据库编码呢?

  • 因为数据库里是需要存表的,在数据库里可能要建各种各样的表,有存各种各样数据的需求,这些表采用编码和校验规则是继承至它所在的数据库。
  • 数据库默认依赖于mysqld,表依赖于数据库。这样就可以理解为什么要做这样的配置。

4.4 修改数据库

ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]

alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
  • 对数据库的修改主要是修改数据库的字符集,校验规则

4.5 数据库删除

DROP DATABASE [IF EXISTS] db_ name;
  • 数据库内部看不到对应的数据库
  • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
  • 注意:不要随意删除数据库
备份和恢复                          

① 备份

# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

🔥 把test1.sql打开后,可以看到里面是大部分内容我们就见过的,如craete database test1、use test1还有后面插入数据等等。

其实它备份的时候,是把在这个数据库里做的有效操作全备份起来了。

所以说备份的不是只有数据,还把历史上所有有效操作全部备份起来了。

② 还原

mysql> source D:/mysql-5.7.22/mytest.sql

两个注意点:

  • 不用/home/root ,直接/root
  • root 下的文件只有 root 下连接 mysql 才有权限恢复

注意事项

如果备份的不是整个数据库,而是其中的一张表,怎么做?

mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql

同时备份多个数据库

mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
  • 如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原
  • 备份时带了 -B 这个备份文件其实是带了create databdase test1,use test1
  • 如果没有带 -B 备份的时候只会把这个数据库里面所有表信息数据信息全部备份出来,如果需要还原需要自己先把数据库建好。
查看连接情况
show processlist;

-- 示例
mysql> show processlist;
+-----+-----------------+-----------+------+---------+--------+------------------------+------------------+
| Id  | User            | Host      | db   | Command | Time   | State                  | Info             |
+-----+-----------------+-----------+------+---------+--------+------------------------+------------------+
|   5 | event_scheduler | localhost | NULL | Daemon  | 366405 | Waiting on empty queue | NULL             |
| 163 | root            | localhost | NULL | Query   |      0 | init                   | show processlist |
+-----+-----------------+-----------+------+---------+--------+------------------------+------------------+
2 rows in set, 1 warning (0.00 sec)
  • 可以告诉我们当前有哪些用户连接到我们的MySQL
  • 如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了
  • 以后发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况

5. 共勉

【*★,°*:.☆( ̄▽ ̄)/$:*.°★* 】那么本篇到此就结束啦,如果有不懂 和 发现问题的小伙伴可以在评论区说出来哦,同时我还会继续更新关于【MySQL】的内容,请持续关注我 !!

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

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

相关文章

【思科】NAT配置

网络拓扑图 这个网络拓扑的核心是Router1,它通过配置多个VLAN子接口来实现对不同VLAN的支持,并通过NAT进行地址转换,使得内部网络能够与外部网络进行通信。Router1上配置了FastEthernet0/0.x接口,并启用了802.1Q封装,…

WGAN - 瓦萨斯坦生成对抗网络

1. 背景与问题 生成对抗网络(Generative Adversarial Networks, GANs)是由Ian Goodfellow等人于2014年提出的一种深度学习模型。它包括两个主要部分:生成器(Generator)和判别器(Discriminator)…

【数学建模美赛速成系列】O奖论文绘图复现代码

文章目录 引言折线图 带误差棒得折线图单个带误差棒得折线图立体饼图完整复现代码 引言 美赛的绘图是非常重要得,这篇文章给大家分享我自己复现2024年美赛O奖优秀论文得代码,基于Matalab来实现,可以直接运行出图。 折线图 % MATLAB 官方整理…

兼职全职招聘系统架构与功能分析

2015工作至今,10年资深全栈工程师,CTO,擅长带团队、攻克各种技术难题、研发各类软件产品,我的代码态度:代码虐我千百遍,我待代码如初恋,我的工作态度:极致,责任&#xff…

svn tag

一般发布版本前,需要在svn上打个tag。步骤如下: 1、空白处右击,选择TortoiseSVN->Branch/tag; 2、填写To path,即tag的路基以及tag命名(一般用版本号来命名);填写tag信息;勾选cr…

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(七)

文章目录 一、题库管理模块实现1、新增题目功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、题目列表功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询题目列表接口实现2.3.2 后端编辑试题接口实现2.4 效果展示二、代码下载一、题库管…

【Cesium入门教程】第一课:Cesium简介与快速入门详细教程

Cesium概述 Cesium是一个基于JavaScript开发的WebGL三维地球和地图可视化库。 它利用了现代Web技术,如HTML5、WebGL和WebAssembly,来提供跨平台和跨浏览器的三维地理空间数据可视化。 Cesium的主要特点包括: 跨平台、跨浏览器&#xff1a…

Unity中实现伤害跳字效果(简单好抄)

第一步骤安装并导入Dotween插件(也可以不用导入之后直接下载我的安装包) 官网DOTween - 下载 第二步: 制作跳字预制体 建议把最佳适应打开,这样就不怕数字太大显示不全了。 第三步:创建一个空对象并编写脚本JumpNumbe…

AI与低代码发展下的程序员就业展望:经济环境对就业市场的影响

AI与低代码发展下的程序员就业展望:经济环境对就业市场的影响 随着人工智能(AI)技术的不断进步和低代码平台的日益成熟,软件开发行业正在经历一场深刻的变革。与此同时,全球经济环境的变化也对程序员的就业市场产生了…

复古怀旧美感35mm胶片模拟色调颗粒汽车商业摄影Lightroom调色预设 Mike Crawat 2024 35MM FILM LOOK PRESETS

10个电脑端手机端35mm胶片模拟汽车摄影风光人像扫街LR预设 Mike Crawat 2024 35MM FILM LOOK PRESETS 这个精心制作的 10 个预设集合旨在为您的数码照片提供 35 毫米胶片的丰富、怀旧美感。每个预设都复制了标志性胶片的独特色调、颗粒和颜色配置文件,让您只需单击…

Hadoop 和 Spark 的内存管理机制分析

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…

Linux容器(初学了解)

目录 一、容器 1.1、容器技术 1.2、容器和虚拟机之间的差异 1.3、Rootless 和 Rootful 容器 1.4、设计基于容器的架构 1.5、容器管理工具 1.6、容器镜像和注册表 1.7、配置容器注册表 1.8、使用容器文件构建容器镜像 二、部署容器 2.1、Podman 实用程序 2.2、安装容…

.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)

系列文章目录 1、.Net Core微服务入门系列(一)——项目搭建 2、.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上) 3、.Net Core微服务入门全纪录(三)——Consul-服务注…

成就与远见:2024年技术与思维的升华

个人主页:chian-ocean 前言: 2025年1月17日,2024年博客之星年度评选——创作影响力评审的入围名单公布。我很荣幸能够跻身Top 300,虽然与顶尖博主仍有一定差距,但这也为我提供了更加明确的发展方向与指引。展望崭新的2025年&…

记一次数据库连接 bug

整个的报错如下: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Metho…

力扣 搜索二维矩阵

二分查找,闭区间与开区间的不同解法。 题目 乍一看,不是遍历一下找到元素就可以了。 class Solution {public boolean searchMatrix(int[][] matrix, int target) {for (int[] ints : matrix) {for (int ans : ints) {if (ans target) return true;}}…

Linux 使用 GDB 进行调试的常用命令与技巧

GDB 调试的常用命令与技巧 1. GDB 常用命令1.1 安装 GDB1.2 启动 GDB1.3 设置程序的参数1.4 设置断点1.5 启动程序并运行至断点1.6 执行一步1.7 打印变量值1.8 查看函数调用栈 2. GDB 调试 Core 文件2.1 生成 Core 文件2.2 使用 GDB 调试 Core 文件 3. GDB 调试正在运行的程序3…

微服务网关,如何选择?

什么是API网关 API网关(API Gateway)是微服务架构中的一个关键组件,它充当了客户端与后端服务之间的中间层。其主要功能包括请求路由、协议转换、负载均衡、安全认证、限流熔断等。通过API网关,客户端无需直接与多个微服务交互&a…

Spring 6 第3章——容器:IoC

一、IoC容器 IoC是Inversion of Control的简写,翻译为“控制反转”.它不是一门技术,而是一种设计思想 Spring通过IoC容器来管理(1)所有Java对象的实例化和初始化,(2)控制对象与对象之间的依赖…

Docker:基于自制openjdk8镜像 or 官方openjdk8镜像,制作tomcat镜像

一、制作openjdk8基础镜像【基于自定义alpine-3.18.0:v1 】 docker pull maven:3.5.0-jdk-8-alpine 78.56 MB https://hub.docker.com/_/maven/tagspage8&namealpine openjdk二进制下载地址 https://blog.csdn.net/fenglllle/article/details/124786948 https://adoptope…