文章目录
- 一、安装前准备
-
- [1. 系统要求](#1. 系统要求)
- [2. 清理旧版 MySQL(可选)](#2. 清理旧版 MySQL(可选))
- [二、安装方式一:官方 YUM/APT 仓库安装(推荐)](#二、安装方式一:官方 YUM/APT 仓库安装(推荐))
-
- [2.1 CentOS 系统(YUM 仓库)](#2.1 CentOS 系统(YUM 仓库))
- [2.2 Ubuntu 系统(APT 仓库)](#2.2 Ubuntu 系统(APT 仓库))
- 三、安装方式二:二进制包安装(适合自定义安装路径)
- [四、MySQL 基础配置](#四、MySQL 基础配置)
-
- [4.1 编辑主配置文件 my.cnf](#4.1 编辑主配置文件 my.cnf)
- [4.2 启动 MySQL 服务并设置开机自启](#4.2 启动 MySQL 服务并设置开机自启)
- [4.3 重置 root 密码(关键)](#4.3 重置 root 密码(关键))
- [4.4 配置远程连接(可选)](#4.4 配置远程连接(可选))
- 五、安装验证
- 六、常见问题解决
-
- [6.1 启动 MySQL 服务失败](#6.1 启动 MySQL 服务失败)
- [6.2 远程连接失败](#6.2 远程连接失败)
- [6.3 密码强度不满足要求](#6.3 密码强度不满足要求)
- [七、卸载 MySQL(可选)](#七、卸载 MySQL(可选))
- 八、总结
本文针对 Linux 主流发行版(CentOS 7/8、Ubuntu 20.04/22.04),详细讲解 MySQL 8.0 的两种安装方式(官方 YUM/APT 仓库安装、二进制包安装),附带配置优化和常见问题解决,适合运维人员及开发人员参考。
一、安装前准备
1. 系统要求
-
CentOS:CentOS 7 及以上(64 位),内存 ≥ 2GB,磁盘空间 ≥ 10GB
-
Ubuntu:Ubuntu 20.04 及以上(64 位),内存 ≥ 2GB,磁盘空间 ≥ 10GB
-
通用要求:关闭防火墙或开放 MySQL 默认端口(3306),禁止安装旧版 MySQL(避免冲突)
2. 清理旧版 MySQL(可选)
若系统已安装旧版 MySQL(如 5.7),需先卸载清理,避免依赖冲突:
(1)CentOS 系统
bash
# 停止 MySQL 服务
systemctl stop mysqld
# 卸载 MySQL 组件
yum remove -y mysql-community-server mysql-community-client mysql-community-common mysql-community-libs
# 清理残留文件
rm -rf /var/lib/mysql/
rm -rf /etc/my.cnf
rm -rf /var/log/mysqld.log
(2)Ubuntu 系统
bash
# 停止 MySQL 服务
systemctl stop mysql
# 卸载 MySQL 组件(保留配置文件)
apt remove -y mysql-server mysql-client mysql-common
# 彻底卸载(删除配置文件)
apt purge -y mysql-server mysql-client mysql-common
# 清理残留文件
rm -rf /var/lib/mysql/
rm -rf /etc/mysql/
rm -rf /var/log/mysql/
二、安装方式一:官方 YUM/APT 仓库安装(推荐)
通过 MySQL 官方仓库安装,可自动解决依赖,且方便后续版本更新,适合大多数场景。
2.1 CentOS 系统(YUM 仓库)
(1) 步骤 1:下载并安装官方 YUM 源
bash
# 进入临时目录
cd /tmp
# 下载 MySQL 8.0 YUM 源(CentOS 7 对应 el7,CentOS 8 对应 el8)
# CentOS 7:
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# CentOS 8:
# wget https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm
# 安装 YUM 源
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
(2)步骤 2:验证 YUM 源是否生效
bash
yum repolist enabled | grep mysql
若输出包含 mysql80-community 相关条目,说明源生效。
(3)步骤 3:安装 MySQL 8.0
bash
yum install -y mysql-community-server
等待安装完成,YUM 会自动安装所有依赖组件。
2.2 Ubuntu 系统(APT 仓库)
(1)步骤 1:下载并安装官方 APT 源
bash
# 安装依赖工具
apt install -y wget gnupg
# 下载 MySQL 8.0 APT 源配置文件
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
# 安装 APT 源(安装过程中会弹出配置界面,默认选择 MySQL 8.0 即可,点击 OK 确认)
dpkg -i mysql-apt-config_0.8.22-1_all.deb
# 更新 APT 缓存
apt update
(2)步骤 2:安装 MySQL 8.0
bash
apt install -y mysql-server
安装过程中会弹出设置 MySQL root 用户密码的界面,输入密码并确认(密码需包含大小写字母、数字、特殊符号,确保安全性)。
三、安装方式二:二进制包安装(适合自定义安装路径)
若需自定义安装路径(如 /data/mysql),可选择二进制包安装,步骤如下(以 CentOS 7 为例,Ubuntu 流程类似):
(1)步骤 1:下载二进制包
我们下载通用二进制包(glibc 2.17,适配 CentOS 7),官网下载地址:https://downloads.mysql.com/archives/community/

bash
cd /tmp
# 下载 MySQL 8.0 二进制包(Linux x86_64)
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.36-linux-glibc2.17-x86_64.tar
#解压
tar -xvf mysql-8.0.36-linux-glibc2.17-x86_64.tar
得到如下文件

(2)步骤 2:解压安装包并移动到自定义路径
bash
# 解压压缩包,解压到自定义路径(如 /usr/local/app/mysql)
tar -xvf mysql-8.0.36-linux-glibc2.17-x86_64.tar.xz -C /usr/local/app
# 添加软链接
cd /usr/local/app
ln -s mysql-8.0.36-linux-glibc2.17-x86_64/ /usr/local/app/mysql
# 创建数据存储目录
mkdir -p /data/mysql/data
# 创建日志目录
mkdir -p /data/mysql/log
(3)步骤 3:创建 MySQL 用户和组
bash
# 创建 mysql 组
groupadd mysql
# 创建 mysql 用户(加入 mysql 组,不允许登录系统)
useradd -r -g mysql -s /sbin/nologin mysql
# 授权目录权限
chown -R mysql:mysql /usr/local/app/mysql/
chown -R mysql:mysql /data/mysql/
(4)步骤 4:初始化 MySQL
bash
# 进入 MySQL 安装目录的 bin 目录
cd /usr/local/app/mysql/bin
# 初始化(生成临时 root 密码,记录日志中的密码)
./mysqld \
--initialize \
--user=mysql \ # 运行用户
--basedir=/usr/local/app/mysql \ # MySQL 安装目录
--datadir=/data/mysql/data \ # 数据存储目录
--log-error=/data/mysql/log/mysqld.log # 自定义日志文件路径(含文件名)

初始化完成后,查看临时密码:
bash
cat /data/mysql/log/mysqld.log | grep "temporary password"

输出示例:2024-05-20T08:30:00.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: XXXXXXXX(临时密码)
(5)步骤 5:配置 MySQL 服务
bash
# 复制服务配置文件到 /etc/systemd/system/
cp /usr/local/app/mysql/support-files/mysql.server /etc/systemd/system/mysqld.service
# 编辑服务配置文件,指定安装路径和数据路径
vim /etc/systemd/system/mysqld.service
在配置文件中添加以下内容(若已存在则修改):
ini
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf --datadir=/data/mysql/data --basedir=/usr/local/app/mysql --log-error=/data/mysql/log/mysqld.log
LimitNOFILE=5000

四、MySQL 基础配置
4.1 编辑主配置文件 my.cnf
bash
vim /etc/my.cnf
添加/修改以下核心配置(根据实际需求调整):
ini
[mysqld]
# 端口
port=3306
# 数据目录(YUM/APT 安装默认 /var/lib/mysql,二进制包安装为自定义路径)
datadir=/var/lib/mysql
# 套接字文件
socket=/var/lib/mysql/mysql.sock
# 字符集(推荐 UTF8MB4,支持 emoji)
character-set-server=utf8mb4
# collation
collation-server=utf8mb4_unicode_ci
# 最大连接数
max_connections=1000
# 日志文件
log-error=/var/log/mysqld.log
# 临时表大小
tmp_table_size=64M
max_heap_table_size=64M
[mysql]
# 客户端字符集
default-character-set=utf8mb4
[client]
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8mb4

4.2 启动 MySQL 服务并设置开机自启
(1)CentOS/Ubuntu 通用命令
bash
# 重新加载系统服务(修改配置文件后执行)
systemctl daemon-reload
# 启动 MySQL 服务
systemctl start mysqld
# 查看服务状态(active (running) 表示启动成功)
systemctl status mysqld
# 设置开机自启
systemctl enable mysqld

4.3 重置 root 密码(关键)
(1)YUM/APT 安装(Ubuntu 已设置密码,可跳过)
bash
# 查看临时密码(YUM 安装默认生成临时密码)
grep 'temporary password' /var/log/mysqld.log
# 登录 MySQL
mysql -u root -p
# 输入上述临时密码
# 重置密码(密码强度需符合要求:大小写字母+数字+特殊符号)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword@2024';
# 刷新权限
FLUSH PRIVILEGES;
(2)二进制包安装
bash
# 登录 MySQL(使用初始化时的临时密码)
/usr/local/app/mysql/bin/mysql -u root -p
# 重置密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword@2024';
# 刷新权限
FLUSH PRIVILEGES;

4.4 配置远程连接(可选)
默认情况下,root 用户仅允许本地连接,若需远程连接 MySQL,执行以下命令:
bash
# 登录 MySQL
mysql -u root -p
# 允许 root 用户远程连接(% 表示所有 IP,也可指定具体 IP,如 192.168.1.100)
CREATE USER 'root'@'%' IDENTIFIED BY 'NewPassword@2024';
# 授予 root 用户所有权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
# 刷新权限
FLUSH PRIVILEGES;
同时,需开放 Linux 防火墙 3306 端口:
CentOS 系统
bash
# 开放 3306 端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重新加载防火墙规则
firewall-cmd --reload
Ubuntu 系统
bash
# 开放 3306 端口
ufw allow 3306/tcp
# 重启防火墙
ufw reload
五、安装验证
bash
# 登录 MySQL
/usr/local/app/mysql/bin/mysql -u root -p
# 输入重置后的密码
# 查看 MySQL 版本
select version();
# 输出示例:8.0.36
# 查看数据库列表
show databases;
# 输出包含 information_schema、mysql、performance_schema、sys 等默认数据库,说明安装成功

六、常见问题解决
6.1 启动 MySQL 服务失败
-
查看日志排查原因:
cat /var/log/mysqld.log -
常见原因:端口被占用(使用
netstat -tuln | grep 3306查看端口占用,修改 my.cnf 中的 port 配置)、数据目录权限不足(执行chown -R mysql:mysql /var/lib/mysql授权)
6.2 远程连接失败
-
检查防火墙是否开放 3306 端口(执行
firewall-cmd --list-ports或ufw status查看) -
检查 root 用户远程权限是否配置正确(登录 MySQL 执行
select user,host from mysql.user where user='root';,确保 host 为 % 或指定的远程 IP) -
检查网络是否通畅(远程机器执行
ping 服务器 IP和telnet 服务器 IP 3306测试连接)
6.3 密码强度不满足要求
MySQL 8.0 默认启用密码强度验证插件(validate_password),若需设置简单密码,可临时关闭验证:
bash
# 登录 MySQL
mysql -u root -p
# 关闭密码强度验证
set global validate_password.policy=0;
set global validate_password.length=6;
# 重置简单密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
注意:生产环境不建议关闭密码强度验证,需保证密码安全性。
七、卸载 MySQL(可选)
若需卸载 MySQL,执行以下命令(CentOS 为例):
bash
# 停止服务
systemctl stop mysqld
# 卸载组件(YUM 安装)
yum remove -y mysql-community-server mysql-community-client mysql-community-common mysql-community-libs
# 二进制包安装卸载
rm -rf /usr/local/app/mysql
rm -rf /data/mysql
# 清理配置文件和日志
rm -rf /etc/my.cnf
rm -rf /var/log/mysqld.log
# 删除 mysql 用户和组
userdel -r mysql
groupdel mysql
八、总结
本文介绍了 Linux 系统下 MySQL 8.0 的两种安装方式,YUM/APT 仓库安装适合快速部署,二进制包安装适合自定义需求。安装完成后,需重点配置 root 密码和远程连接权限,确保数据库安全可用。若遇到问题,可通过查看日志快速定位原因,按常见问题解决方法处理。