Ubuntu安装MySQL完整指南:从版本选型到问题排查

在 Ubuntu 上安装 MySQL 的详细指南 在Ubuntu环境中安装以及MySQL开发包(包括头文件和动态库文件),并处理最新版本MySQL初始自动生成的用户名和密码,可以通过官方的APT包管理器轻松完成。以下是详细的步骤指南,包括从官方仓库和MySQL官方仓库安装的两种方法,并介绍如何处理自动生成的初始用户名和密码,以及如何修改root初始密码。 阅读详情

最近又有朋友在群里问,Ubuntu上面怎么装MySQL,装到一半卡住了怎么处理,还有人说装完之后密码不对进不去。这些场景我太熟悉了,从最早在大学用VMware开Ubuntu虚拟机折腾,到后来在公司负责Linux服务器的数据库部署,再到现在自己搭开发环境,Ubuntu环境下安装MySQL这个组合,前前后后至少操作过几十次。

说容易也容易,apt一条命令就能把服务跑起来;说麻烦也麻烦,版本选型、安全初始化、字符集、远程权限、参数调优,每个环节都有讲究。这篇文章我把整套流程和踩过的坑整理出来,从环境准备、安装方式选型到安全配置和问题排查,尽量写得可以直接照着做。适合刚入手Linux的新人,也适合在服务器上部署数据库时想少走弯路的运维和开发朋友。

1. 为什么是Ubuntu + MySQL:装之前先分清场景和版本

1.1 版本选型:系统自带的MySQL和官方源里的MySQL是两码事

Ubuntu的软件仓库里一直有mysql-server包,但它不一定是你想要的最新版。拿Ubuntu 20.04来说,自带源里的MySQL通常停留在8.0.19左右,安全补丁和bugfix都是滞后的;到了22.04和24.04,自带源里的8.0版本会稍微新一些,但同样不是官方源里从头维护的那种。假如你只是本地临时起个服务,系统自带版够用;但如果你要跑业务、要长期维护,我更建议直接用MySQL官方提供的APT仓库。

这里有个细节值得说清楚:Ubuntu源里那个mysql-server实际上也来自MySQL官方,只是发行版在打包发布时会把版本号固定下来,后续不会再主动跟着官方版本走。MySQL官方源则不同,它会持续推送新的小版本,比如从8.0.33升到8.0.34,这类维护一旦中断,后面遇到bug就要自己去查补丁了。所以多花两分钟配官方源,长期看是划算的。

还有一部分朋友会问MariaDB行不行。作为一个从MySQL移植过来的分支产品,MariaDB在绝大多数场景下确实能无缝替换,很多云厂商的"MySQL兼容"服务底层其实就是MariaDB或者Percona。但如果你依赖的是MySQL 8.0的某些新特性,比如窗口函数、CTE(公共表表达式)、caching_sha2_password认证插件,或者你要用Navicat、MySQL Workbench这类工具直接连,那就老老实实装MySQL。MariaDB的默认认证插件和8.0不一样,某些客户端连接时会碰到旧客户端不支持新认证协议的问题。

1.2 四种安装方式:apt、tar包、源码编译与容器化

安装方式 优点 缺点 适合场景
apt安装 最快、依赖自动处理、systemd服务自动配置好 版本受仓库控制 绝大多数开发/生产环境
tar.gz二进制包 版本任意选、不受系统源管控、可安装到任意目录 需要自己初始化数据目录和配置文件 需要特定版本或自定义安装路径
源码编译 可定制编译参数、适配特定CPU/内核优化 耗时长、依赖gcc/cmake等工具链、升级麻烦 嵌入式平台或极致优化需求
Docker容器 环境隔离、秒级启动、方便迁移 有一定性能损耗、需要额外学习容器操作 测试开发环境、微服务架构

我见过不少新手一上来就找"源码编译安装MySQL 8.0",因为网上有教程,觉得"自己编译才厉害"。但说句实在话,绝大多数场景下根本不需要这么做。源码编译要装gcc、make、cmake、ncurses等一堆工具链,在Ubuntu上如果build-essential没装好,光是安装gcc失败这个报错就能卡半天(后面第5章我会细说)。编译一次花费几十分钟属于常态,而且编译出来的版本后续升级还是得走编译流程。如果你的需求只是跑一个数据库服务,apt是最稳的;如果你确实有特殊版本需求,请用官方编译好的二进制包,别自己从源代码折腾。

容器的路线也说一下。如果你的环境是Kubernetes这类容器平台,或者想要一个用完就扔的本地测试库,直接用Docker跑官方mysql:8镜像会非常省事:

docker run --name mysql-test -e MYSQL_ROOT_PASSWORD=your_password -d mysql:8

不用手工初始化,不用管systemd,数据目录挂出来就行。不过容器方式对网络和磁盘I/O有额外开销,生产环境的数据库我更倾向裸机或虚拟机上的apt安装,这块见仁见智吧。

1.3 环境定位:开发机、测试机和生产机的安装思路完全不同

同样是搭MySQL,在不同环境下的姿势差很远。在开发笔记本或虚拟机上,你怎么折腾都行,装错版本卸载重来也快,甚至可以开多个容器伺候不同项目的数据库。但到了生产服务器上,原则就变成:少操作、少变更、每一步都要有回滚预案。比如"apt upgrade"这种命令在开发机上没什么风险,但生产机上如果因为升级内核或库文件导致服务起不来,那就麻烦了。

还有一点是关于虚拟机和双系统的。很多人学Linux是先装一个VMware或VirtualBox,然后在虚拟机里跑Ubuntu镜像。这种环境装MySQL跟在物理机上没有本质区别,apt逻辑完全一样。如果你用的是Windows的WSL2,把Ubuntu作为发行版跑起来,装MySQL的步骤也基本适用,只是WSL2的场景下systemd可能没有默认启用,需要用service mysql status来管理服务,这点在5.1小节会再提到。

2. 动手前的环境准备:先把系统基础打牢

2.1 更新系统与安装基础工具

安装MySQL之前,先把系统更新一遍,避免软件源里的包索引太旧导致安装报404或版本冲突。按顺序执行:

sudo apt update
sudo apt upgrade -y

第一条update是刷新软件包索引,第二条upgrade是把已安装的软件升到源里的最新版。这里要说明一下,upgrade要不要执行,取决于环境。我自己的习惯是:本地虚拟机直接升;生产服务器先看变更记录,确认没有特别针对内核或重要库的升级再决定,毕竟生产环境稳定第一。另外,升级完如果涉及内核更新,一般建议重启一次再继续装MySQL,否则旧内核还在占用某些资源,数据库起来之后表现可能不太对。

接下来装基础依赖:

sudo apt install -y wget curl gnupg lsb-release

wget和curl后面要做下载;gnupg用于导入MySQL官方源的GPG签名,这个步骤很重要,如果跳过,apt在更新源的时候就会因为签名校验失败拒绝安装;lsb-release则用来识别当前Ubuntu的发行版代号,方便配置源路径。

2.2 确认系统版本与架构

装之前先确认两件事:系统是什么版本、CPU是什么架构。命令很简单

Ubuntu安装MySQL完整指南:从环境清理到服务验证 MySQL作为最主流的开源关系型数据库,在Linux系统中广泛用于Web开发、测试环境与中小规模生产部署。其核心原理基于C/S架构与ACID事务模型,技术价值体现在高可靠性、丰富权限体系及与PHP/Python等生态的深度集成。典型应用场景包括LAMP/LEMP栈搭建、Docker本地开发、云服务器数据库初始化及WSL2开发环境配置。然而在Ubuntu上部署常因版本差异(如24.04默认MySQL 8.0.36)、残留配置冲突、validate_password插件策略或caching_sha2_passw 阅读详情

相关推荐

Ubuntu 安装 MySQL

Ubuntu安装MySQL8数据库

原名又逢乱世。不要放下学习的脚步,毕竟比天天打牌、钓鱼、打游戏更能从内在充实自己。 2793

Ubuntu 安装 MySQL 版本

在 Ubuntu 操作系统上安装 MySQL 版本非常简单,本文将为您提供详细的步骤和相应的源代码。您现在已经成功在 Ubuntu 上安装了 MySQL 版本。该命令将引导您完成一系列安全性设置,包括删除匿名用户、禁止远程 root 登录等。在安装过程中,您将被要求设置 MySQL 的 root 用户密码。安装完成后,MySQL 服务器将自动启动。一旦连接成功,您将看到 MySQL 提示符,表示您已成功连接到 MySQL 服务器。步骤 6:连接到 MySQL 服务器。步骤 2:安装 MySQL 服务器。

MbfrDeveloper的博客 382

动态掩码语言模型(MLM)优化策略:效率提升与最新技术实践

本文深入探讨了动态掩码语言模型(MLM)的优化策略与技术实践,涵盖核心原理、效率优化及2025年最新突破。重点解析了动态掩码在提升模型性能中的关键作用,包括工程实现、掩码策略演进及混合专家动态掩码等创新技术,为自然语言处理领域的研究与应用提供实用指南。

vscode5coder的博客 197

手把手教你用UM982搭建厘米级RTK定位系统(附避坑指南)

本文详细介绍了如何使用UM982模组搭建厘米级RTK定位系统,涵盖硬件连接、软件配置和深度优化技巧。UM982支持BDS、GPS、GLONASS和Galileo等多系统全频点信号,特别适合精准农业、无人机导航等高精度应用场景。通过实战案例和避坑指南,帮助开发者快速实现厘米级定位精度。

y7z8a的博客 1373

保姆级教程:手把手教你为裕泰微YT8521 PHY芯片编写Linux设备树(DTS)节点与驱动

本文提供了一份详细的保姆级教程,手把手教你为裕泰微YT8521 PHY芯片编写Linux设备树(DTS)节点与驱动。从基础配置到RGMII接口的特殊设置,再到驱动开发的关键步骤和调试技巧,帮助开发者快速掌握PHY芯片的移植与开发。

weixin_33734785的博客 327

loadStop的原因导致的SSUSP

Total内存值是可用来调度的可用内存,当前可用内存为 0M。 loadSched和loadStop的阈值是根据 Total 内存和节点内存来做限制的。 loadStop 50G,现在有大量作业SSUSP,说明之前某个时间点该节点内存可能有低于50G的时候,导致作业SSUSP,具体是否是这个原因引起的需要用 bjobs -l JobID 看下作业的详细信息。 如果是loadStop的原因导致的 SSUSP,根据loadStop设置的阈值,Total 值高于loadStop值后,将逐步恢复挂起的作业

Blueberry521的博客 657

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.1密码应用方案设计

密码应用方案设计

qq_40442137的博客 1459

LDO 上电过冲的根因

LDO在上电瞬间常出现短时过冲电压(3.4V-3.5V),可能损坏敏感器件。其根本原因是:低

硬核科技 279

【100%通过率】华为od统一考试B卷【查找接口成功率最优时间段】Python 实现

服务之间交换的接口成功率作为服务调用关键质量特性,某个时间段内的接口失败率使用一个数组表示,数组中每个元素都是单位时间内失败率数值,数组中的数值为0~100的整数, 给定一个数值(minAverageLost)表示某个时间段内平均失败率容忍值,即平均失败率小于等于minAverageLost,找出数组中最长时间段,如果未找到则直接返回NULL。

MISAYAONE的博客 5861

uniapp [全端兼容] - 实现人脸识别对比+人脸相似度,从相册选择或拍照上传两张图片进行人脸对比得到人脸相似度及判断是否是同一个人,人脸活体检测及对比(免费纯前端方案+调用第三方API接口方案)

uniApp人脸对比 人脸对比识别 人脸对比相似度,uniapp实现获取手机摄像头权限,调用相机拍照实现人脸识别相似度对比,uniapp实现人脸识别对比,计算两张人脸的相似度,从而判断是否同一个人,并给出相似度评分。uniapp H5网页如何实现人脸相似度比对,uniapp纯前端怎么对比两张图片的相似度,计算两幅图像的相似度,图像相似度对比方法,UNI-APP人脸相似度对比,快速识别两张照片的相似程度(用百分比)图片相似度对比在线测试,图片相似度对比,uniapp微信小程序人脸相似度对比分析,uniapp

🏆 前端领域优质创作者 5009

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: SQL多数据库适配速查手册:从分页到优化的实战指南
下一篇: SQLite同城物流派送后端:数据模型、派单策略与避坑指南
用户甲
博客等级 码龄8年 30粉丝 1万+原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值