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