文章

MySQL 8.0 安装

MySQL 8.0 安装

日常开发和服务器部署中,MySQL 8.0 是目前最主流的数据库版本,相较于 5.7 版本,在性能、安全性、加密规则上都做了大幅升级。很多小伙伴在 CentOS 7 服务器部署 MySQL 8.0 时,经常遇到密码修改失败、远程连接不上、服务启动异常等问题。

今天给大家分享一套完整、可直接落地的 CentOS 7 下 MySQL 8.0 安装配置教程,包含安装、初始化密码、远程访问配置、完整卸载流程以及常见问题解决方案,全程实操无坑,新手也能轻松搞定。

一、部署环境说明

本次实操环境统一标准化,适配绝大多数云服务器、物理服务器:

  • 操作系统:CentOS 7 系列

  • 数据库版本:MySQL 8.0 社区版(稳定通用)

  • 安装方式:MySQL 官方 Yum 仓库安装(安全、版本最新、适配性强)

二、MySQL 8.0 详细安装步骤

1. 安装 MySQL 官方 Yum 源

CentOS 7 默认自带的 Yum 仓库没有 MySQL 8.0 版本,需要先安装官方的 Yum 源配置包,后续即可通过官方源在线安装正版 MySQL。

1
yum -y install mysql80-community-release-el7-7.noarch.rpm

执行完成后,系统会自动添加 MySQL 官方仓库,为后续安装提供依赖支持。

2. 安装 MySQL 服务端

配置好源之后,直接通过 Yum 命令一键安装 MySQL 社区版服务:

1
yum -y install mysql-community-server

若服务器网络异常,Yum 安装失败,可下载 RPM 离线包手动安装:

1
rpm -ivh mysql-community-server-8.0.x86_64.rpm

3. 启动服务并设置开机自启

安装完成后,不会自动启动服务,需要手动启动,并配置开机自启,避免服务器重启后数据库失效。

1
2
3
4
5
6
7
8
# 启动 MySQL 服务
systemctl start mysqld.service

# 设置开机自启
systemctl enable mysqld

# 查看服务运行状态
systemctl status mysqld

正常效果:页面显示 active \(running\),代表服务启动成功。

三、MySQL 初始密码配置

MySQL 8.0 摒弃了 5.7 的空密码模式,首次启动会自动生成随机临时密码,必须修改密码后才能正常使用数据库。

1. 查询初始临时密码

临时密码存储在 MySQL 日志文件中,执行以下命令快速抓取密码:

1
grep "password" /var/log/mysqld.log

输出示例:

```Plain Text 2023-10-01T08:30:00.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: AbC123!@#

1
2
3
4
5
6
7
8
9
末尾的 `AbC123\!@\#` 即为初始临时密码。

### 2\. 登录数据库并修改密码

先通过临时密码登录 MySQL:

```bash
mysql -uroot -p

回车后输入上述获取的临时密码,即可登录数据库。

MySQL 8.0 强制开启强密码策略,密码必须包含大小写字母、数字、特殊字符,长度不低于8位,执行以下SQL修改密码并生效:

1
2
3
4
5
# 修改 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456Aa!';

# 刷新权限,配置立即生效
flush privileges;

四、配置远程连接(核心步骤)

MySQL 默认仅允许 localhost本地登录,本地可以正常使用,但远程工具(Navicat、DBeaver)无法连接,需要手动开启远程访问权限。

1. 开启 root 用户远程权限

登录 MySQL 后,依次执行以下命令,允许所有IP地址远程连接数据库:

1
2
3
4
5
6
7
8
9
10
11
# 切换到系统数据库
use mysql;

# 查看当前 root 用户的访问权限
select host,user from user where user='root';

# 修改为全网段访问(% 代表所有IP)
update user set host='%' where user='root' and host='localhost';

# 刷新权限生效
flush privileges;

2. 放行服务器 3306 端口

CentOS 7 默认开启防火墙,会拦截 MySQL 默认 3306 端口,需要手动放行端口,否则远程依旧连接失败:

1
2
3
4
5
# 永久开放 3306 端口
firewall-cmd --add-port=3306/tcp --zone=public --permanent

# 重载防火墙配置
firewall-cmd --reload

⚠️ 云服务器额外注意:阿里云、腾讯云等服务器,还需要在控制台安全组放行 3306 端口。

五、MySQL 8.0 完整卸载教程

如果安装出错、版本冲突,需要彻底重装 MySQL,必须完整卸载并清理残留文件,避免后续安装报错。

1. 停止 MySQL 服务

1
systemctl stop mysqld.service

2. 卸载所有 MySQL 依赖包

1
2
3
4
5
# 查询所有 MySQL 相关安装包
rpm -qa | grep mysql

# 卸载所有相关包(替换为自己查询到的包名)
yum remove -y mysql-community-server-8.0.x86_64 mysql-community-client-8.0.x86_64 ...

3. 清理残留文件与配置

卸载后会残留配置文件、数据文件,需彻底删除,防止冲突:

1
2
3
4
5
6
7
8
# 查找所有 MySQL 相关目录文件
find / -name mysql

# 删除残留目录(替换为实际查询路径)
rm -rf /var/lib/mysql /etc/mysql /usr/share/mysql ...

# 删除核心配置文件
rm -rf /etc/my.cnf

六、常见问题汇总与解决

1. 密码修改失败

原因:MySQL 8.0 强密码策略限制,简单密码无法通过校验。

解决方案:密码必须满足 8 位以上,同时包含大写字母、小写字母、数字、特殊符号。

2. 远程连接一直失败

按以下顺序逐一排查:

  • root 用户 host 是否修改为 %

  • 服务器防火墙是否放行 3306 端口

  • 云服务器安全组是否开放 3306 端口

  • 本地网络是否能正常访问服务器端口

3. MySQL 服务启动失败

排查方案:查看官方日志文件定位具体报错:/var/log/mysqld\.log

常见原因:配置文件参数错误、数据目录权限异常、端口被占用。

七、总结

本文档覆盖了 CentOS 7 下 MySQL 8.0 安装、初始化、远程配置、卸载、问题排查全流程,是一套可直接用于测试、生产环境的实操教程。整体操作简单,无复杂配置,按照步骤执行即可快速部署成功,完美适配日常开发和项目上线需求。

本文由作者按照 CC BY 4.0 进行授权