Linux 系统 MySQL 8.0 详细安装教程
文章目录
- 一、安装前准备
- 二、安装方式一:官方 YUM/APT 仓库安装(推荐)
- 三、安装方式二:二进制包安装(适合自定义安装路径)
- 四、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 系统
# 停止 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 系统
# 停止 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 源
# 进入临时目录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 源是否生效
yum repolist enabled |grep mysql 若输出包含 mysql80-community 相关条目,说明源生效。
(3)步骤 3:安装 MySQL 8.0
yum install -y mysql-community-server 等待安装完成,YUM 会自动安装所有依赖组件。
2.2 Ubuntu 系统(APT 仓库)
(1)步骤 1:下载并安装官方 APT 源
# 安装依赖工具aptinstall -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
aptinstall -y mysql-server 安装过程中会弹出设置 MySQL root 用户密码的界面,输入密码并确认(密码需包含大小写字母、数字、特殊符号,确保安全性)。
三、安装方式二:二进制包安装(适合自定义安装路径)
若需自定义安装路径(如 /data/mysql),可选择二进制包安装,步骤如下(以 CentOS 7 为例,Ubuntu 流程类似):
(1)步骤 1:下载二进制包
我们下载通用二进制包(glibc 2.17,适配 CentOS 7),官网下载地址:https://downloads.mysql.com/archives/community/

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:解压安装包并移动到自定义路径
# 解压压缩包,解压到自定义路径(如 /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 用户和组
# 创建 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
# 进入 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 # 自定义日志文件路径(含文件名)
初始化完成后,查看临时密码:
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 服务
# 复制服务配置文件到 /etc/systemd/system/cp /usr/local/app/mysql/support-files/mysql.server /etc/systemd/system/mysqld.service # 编辑服务配置文件,指定安装路径和数据路径vim /etc/systemd/system/mysqld.service 在配置文件中添加以下内容(若已存在则修改):
[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
vim /etc/my.cnf 添加/修改以下核心配置(根据实际需求调整):
[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 通用命令
# 重新加载系统服务(修改配置文件后执行) systemctl daemon-reload # 启动 MySQL 服务 systemctl start mysqld # 查看服务状态(active (running) 表示启动成功) systemctl status mysqld # 设置开机自启 systemctl enable mysqld 
4.3 重置 root 密码(关键)
(1)YUM/APT 安装(Ubuntu 已设置密码,可跳过)
# 查看临时密码(YUM 安装默认生成临时密码)grep'temporary password' /var/log/mysqld.log # 登录 MySQL mysql -u root -p # 输入上述临时密码# 重置密码(密码强度需符合要求:大小写字母+数字+特殊符号) ALTER USER'root'@'localhost' IDENTIFIED BY 'NewPassword@2024';# 刷新权限 FLUSH PRIVILEGES;(2)二进制包安装
# 登录 MySQL(使用初始化时的临时密码) /usr/local/app/mysql/bin/mysql -u root -p # 重置密码 ALTER USER'root'@'localhost' IDENTIFIED BY 'NewPassword@2024';# 刷新权限 FLUSH PRIVILEGES;
4.4 配置远程连接(可选)
默认情况下,root 用户仅允许本地连接,若需远程连接 MySQL,执行以下命令:
# 登录 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 系统
# 开放 3306 端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent # 重新加载防火墙规则 firewall-cmd --reload Ubuntu 系统
# 开放 3306 端口 ufw allow 3306/tcp # 重启防火墙 ufw reload 五、安装验证
# 登录 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),若需设置简单密码,可临时关闭验证:
# 登录 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 为例):
# 停止服务 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 密码和远程连接权限,确保数据库安全可用。若遇到问题,可通过查看日志快速定位原因,按常见问题解决方法处理。