MySQL 8.0 在 CentOS 7 上的详细安装教程

2026-10-14 08:01:40

很多开发者在搭建 Linux 服务器环境时都会选择 CentOS 7,而 MySQL 8.0 作为目前主流的关系型数据库,性能和安全方面都有显著提升。下面这篇教程不讲虚的,直接用最稳妥的 Yum 源方式带你一步步装好 MySQL 8.0,顺手把基础配置和远程访问也搞定。

第一步:清理旧版或残留文件

如果你之前装过其他版本的 MySQL 或者 MariaDB,建议先清理干净,避免端口冲突或者依赖包打架。打开终端,依次执行几条命令。先用 yum remove mysql-community-server mysql-community-client 看看有没有残留包,如果有就一起删掉。接着用 rm -rf /var/lib/mysql 删除旧的数据目录,注意这一步会清空所有历史数据,生产环境一定要提前备份。最后运行 yum clean all 清理缓存,确保接下来拉取的是最新干净的包。

第二步:添加官方 Yum 软件源

CentOS 7 自带的默认源里通常只有老版本或者 MariaDB,直接 yum install mysql 很可能装上的是 MariaDB。为了装上正牌的 MySQL 8.0,需要手动添加官方源。在命令行输入 curl -O https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm,这条命令会把官方的 release 包下载到当前目录。下载完成后,运行 rpm -ivh mysql80-community-release-el7-3.noarch.rpm 进行安装。这时候系统就已经识别到了 MySQL 的仓库地址,可以直接准备安装了。

第三步:正式安装 MySQL 服务

源加好后,执行 yum install mysql-community-server 开始下载并安装核心组件。这个过程可能需要几分钟,因为要拉取几十个依赖包。安装期间系统会提示你是否接受 GPG 密钥,输入 y 回车确认即可。如果中间提示缺少某个库文件,通常是网络问题,多试几次或者检查下 DNS 设置。全部进度条走完,就说明服务端程序已经静默安装完毕了。

第四步:启动服务并获取初始密码

安装完成不会自动启动,需要手动激活。输入 systemctl start mysqld 启动数据库服务,然后用 systemctl enable mysqld 把它加入开机自启列表。接下来最关键的一步是找初始密码。MySQL 8.0 首次安装会生成一个临时密码,存在错误日志里。执行 grep 'temporary password' /var/log/mysqld.log,把输出的那一行复制出来,记住那个包含大小写字母、数字和符号的复杂密码,后面登录必须用到。

第五步:安全初始化与修改密码

临时密码只能用一次,用完就得改。运行 mysql_secure_installation 进入安全配置向导。第一步会让你输入刚才拿到的临时密码,验证通过后它会问要不要启用密码强度插件。建议选 yes,这样可以强制设置强密码,防止暴力破解。接下来一路按 y 确认,包括移除匿名账号、禁止 root 远程登录、删除测试库和重载权限表。最后一步它会提示你设置新密码,按照要求输入两次即可。整个过程走完后,数据库的安全基线就达标了。

第六步:开放远程连接与防火墙配置

默认情况下 MySQL 8.0 只允许本机访问,外面连不进来。先登录数据库,输入 mysql -u root -p 然后敲密码进交互界面。切换到 mysql 系统库,执行 use mysql;。然后把 root 用户的 host 改成通配符,语句是 update user set host='%' where user='root';。刷新权限 flush privileges;,退出 exit;。回到系统命令行,CentOS 7 用的是 firewalld,输入 firewall-cmd --zone=public --add-port=3306/tcp --permanent,然后 firewall-cmd --reload 让规则生效。至此,外部工具就能通过 3306 端口连上数据库了。

整套流程跑下来,MySQL 8.0 就在你的 CentOS 7 服务器上安家落户了。安装完毕后建议执行 mysql --version 核对版本号,确认一切正常。日常使用中如果遇到字符集乱码,可以在 /etc/my.cnf 配置文件里把 default-character-set 统一改成 utf8mb4。定期备份数据文件,配合云厂商的安全组策略,基本就能满足中小型项目的稳定运行需求。遇到问题优先查看 /var/log/mysqld.log 日志,大部分异常都能在里面找到根源。

相关文章