Linux怎么安装MySQL 8.0?CentOS yum与Ubuntu apt源配置指南
在Linux服务器上部署MySQL 8.0,推荐使用MySQL官方维护的软件源仓库进行安装,这种方式能确保依赖项由包管理器完整托管,同时保持补丁升级路径清晰。本文将分别介绍在基于RPM的CentOS(包含RHEL衍生版)和基于Debian的Ubuntu环境下,从下载配置软件源、执行安装,到初始化服务、密码获取与安全加固的完整操作流程。
图 1:Linux下配置官方源并安装MySQL 8.0的整体阶段流程
一、安装前的环境准备
在添加软件源之前,建议先清理系统内可能残留的旧版本或竞品数据库。许多Linux发行版默认预装了MariaDB,由于两者的二进制文件和系统服务名存在冲突,直接安装会导致依赖冲突报错。
1. 检查并清理历史冲突组件
对于基于RPM的CentOS系统,执行以下命令查询并卸载MariaDB:
# 查询系统自带的 mariadb 关联包
rpm -qa | grep -i mariadb
# 若有输出,将其及依赖清理(示例包名为 mariadb-libs)
sudo rpm -e --nodeps mariadb-libs
对于Ubuntu系统,可以通过以下命令检查是否存在历史残留服务:
sudo apt remove --purge mysql-server mysql-client mariadb-server mariadb-client
sudo apt autoremove
sudo apt autoclean
二、CentOS系统通过yum源安装MySQL 8.0
CentOS基础源自带的MySQL版本通常较旧,安装MySQL 8.0的标准做法是下载Oracle提供的官方Repository RPM包。该包会在 /etc/yum.repos.d/ 目录下生成官方的 .repo 配置文件。
图 2:CentOS下yum源配置与组件安装解析流
1. 下载并安装官方Yum Repository
针对CentOS 7或CentOS 8/Rocky Linux等环境,下载对应的仓库安装包:
# 以 CentOS 7 为例(针对 RHEL 7 / CentOS 7)
wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
sudo rpm -Uvh mysql80-community-release-el7-11.noarch.rpm
# 若使用 CentOS 8 / Rocky 8 / AlmaLinux 8,请下载 el8 版本:
# wget https://dev.mysql.com/get/mysql80-community-release-el8-9.noarch.rpm
# sudo rpm -Uvh mysql80-community-release-el8-9.noarch.rpm
官方RPM包的GPG公钥曾出现过周期性过期。如果在执行
yum install 时遇到 Failing package... GPG check FAILED,可通过手动导入最新密钥解决:
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
2. 执行安装命令
如果是CentOS 8或更高版本,系统自带的默认模块流可能屏蔽第三方MySQL包,需要先禁用模块:
# 仅在 CentOS 8 / RHEL 8 体系需要执行:
sudo dnf module disable mysql -y
# 安装 MySQL 服务端及核心依赖
sudo yum install -y mysql-community-server
3. 启动MySQL服务并获取初始密码
安装完成后,系统不会自动启动MySQL服务。通过systemd启动服务,此时后台会进行初始化工作并生成root临时密码:
# 启动 mysqld 服务
sudo systemctl start mysqld
# 设置开机自启动
sudo systemctl enable mysqld
# 检查运行状态,预期看到 active (running)
sudo systemctl status mysqld
在CentOS上,初始随机密码记录在 /var/log/mysqld.log 文件中。执行以下命令提取:
sudo grep 'temporary password' /var/log/mysqld.log
示例输出:
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: W#x_k8+aPq!z
三、Ubuntu系统通过apt源安装MySQL 8.0
在Ubuntu上,虽然基础apt仓库包含 mysql-server 包,但通常绑定系统发布周期的特定构建版本。为了保持更新与跨机器环境一致,同样推荐配置官方APT Repository。
图 3:Ubuntu下apt官方源交互配置与安装流程
1. 下载并安装官方APT Config包
进入临时目录,下载官方提供的 .deb 引导配置文件:
# 下载官方 apt 仓库配置包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
# 使用 dpkg 进行安装
sudo dpkg -i mysql-apt-config_0.8.33-1_all.deb
在执行 dpkg -i 过程中,终端会弹出一个蓝色背景的 ncurses 交互界面。系统默认会高亮选中 MySQL 8.0。直接按方向键选择最底部的 Ok 并回车确认即可。
2. 刷新源并安装MySQL Server
配置包会将密钥和源列表写入 /etc/apt/sources.list.d/mysql.list。接着更新本地索引并安装:
# 更新 apt 缓存
sudo apt update
# 安装 MySQL 服务端
sudo apt install -y mysql-server
在Ubuntu的安装进程中,系统会直接在终端提示设置 root 用户的管理密码,并要求再次输入以核对。随后会提示选择身份验证插件:建议保留默认的 Use Strong Password Encryption (RECOMMENDED)(即 caching_sha2_password)。
Ubuntu安装完成后,服务通常已默认启动,可确认其运行状态:
sudo systemctl status mysql
四、首次登录、密码修改与安全初始化
无论采用哪种发行版,安装完毕后的第一件事都是完成数据库的安全配置。MySQL官方自带了 mysql_secure_installation 实用工具,用于清理风险项。
1. 登录并修改初始密码(CentOS场景)
如果是CentOS环境,使用刚刚从日志抓取到的临时密码进行初次登录:
# 使用临时密码登录
mysql -u root -p
登录成功后,在执行任何其他SQL命令前,MySQL 8.0会强制要求修改root密码。MySQL 8.0默认开启了严格的密码复杂度策略(需包含大小写字母、数字和特殊字符,长度不少于8位):
-- 修改 root 用户的本地连接密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass@2026!';
FLUSH PRIVILEGES;
EXIT;
2. 运行安全初始化脚本
退出MySQL终端后,在系统命令行执行安全加固脚本:
sudo mysql_secure_installation
向导会依次提示以下选项,推荐按如下方式选择:
- VALIDATE PASSWORD COMPONENT?:是否启用密码强度校验插件。建议输入
y并选择检查级别(通常输入1选择MEDIUM级别)。 - Change the password for root?:如果刚才已经修改过密码,在此处输入
n;若未修改则输入y并设置新密码。 - Remove anonymous users?:移除匿名用户,输入
y。 - Disallow root login remotely?:禁止root用户远程直接登录,出于安全规范,强烈建议输入
y。 - Remove test database and access to it?:删除自带的测试数据库,输入
y。 - Reload privilege tables now?:重新加载权限表以使配置立即生效,输入
y。
五、状态检查与配置对照总结
完成加固后,检查数据库端口监听状态和本地连接连通性,以确认安装无误:
# 检查 3306 端口是否处于 LISTEN 状态
sudo ss -tulpn | grep 3306
# 使用新密码验证登录
mysql -u root -p -e "SELECT VERSION();"
图 4:CentOS 与 Ubuntu 下 MySQL 8.0 关键路径与环境参数对照
通过配置官方源安装MySQL 8.0,不仅使得安装过程规范化,更重要的是将数据库的补丁维护融入了系统的统一包管理器。当后续发布新次版本(例如8.0.x维护补丁)时,只需要执行 sudo yum update mysql-community-server 或 sudo apt upgrade mysql-server,即可平滑完成二进制程序升级。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









