环境与前期准备
CentOS 7 系统底层默认集成的是 MariaDB,如果直接通过基础镜像安装 MySQL 5.7,极易出现依赖冲突或服务端口占用问题。在动手之前,请确保你拥有服务器的 root 权限,并且网络畅通能够正常访问外部仓库。建议先执行一次系统更新,运行 yum update -y 将内核和基础组件同步到最新状态,这能有效减少后续编译或安装过程中的兼容报错。如果服务器上曾经安装过旧版 MySQL 或 MariaDB,务必先将残留文件清理彻底。通过 rpm -qa | grep mysql 和 rpm -qa | grep mariadb 扫描已安装的包,发现多余组件后使用 yum remove 逐个卸载。清理完毕后建议重启一次系统,释放被占用的 3306 端口,保证环境干净。
配置官方 YUM 软件源
MySQL 官方早已停止提供通用的 CentOS 7 直链下载包,现在推荐使用社区版 YUM 源进行自动化安装。进入系统的 /etc/yum.repos.d/ 目录,这里存放着所有软件源的配置文件。你可以直接使用 curl 命令从官网拉取最新的 repo 文件,或者手动创建一个名为 mysql57-community.repo 的新文件。在文件中填入对应的仓库地址,重点是将 enabled 参数设置为 1 以启用 5.7 版本的通道,同时把其他如 5.6 或 8.0 的 enabled 值改为 0,防止 yum 误下载不匹配的版本。配置完成后,运行 yum clean all 和 yum makecache 刷新缓存,确保系统读取到的是最新的元数据列表。
执行安装与启动服务
源配置就绪后,安装过程变得非常简便。直接在终端执行 yum install mysql-community-server -y,系统会自动解析依赖树并完成下载安装。中途若弹出密钥验证提示,输入 y 确认即可。安装结束后不要立即使用,先通过 systemctl status mysqld 查看当前状态,此时服务通常处于未激活状态。接着执行 systemctl start mysqld 开启数据库守护进程,并用 systemctl enable mysqld 将其加入开机自启队列,避免因服务器意外重启导致业务中断。启动成功后,可以通过 netstat -tlnp | grep 3306 或 ss -nltp | grep mysql 验证端口是否正在监听,确认服务已平稳运行。
获取临时密码并重置 Root 账号
MySQL 5.7 引入了严格的安全策略,首次启动时会为 root 用户自动生成一个复杂的随机临时密码,并记录在系统日志中。要找到它,需要执行 grep temporary password /var/log/mysqld.log 命令,复制日志末尾输出的那一串字符。使用 mysql -u root -p 登录客户端,粘贴临时密码进入交互界面。此时任何查询语句都会返回 error 1820 警告,强制要求修改初始密码。执行 alter user 'root'@'localhost' identified by '你的强密码'; 完成重置。请注意密码规范,必须包含大写字母、小写字母、数字及特殊符号,总长度不低于八位,否则会被安全插件拦截。修改成功后,使用 exit 退出客户端重新登录测试。
配置防火墙与远程访问权限
默认情况下,MySQL 仅允许本机回环地址连接,外网工具无法直接访问。如果你需要通过 Navicat 或 DBeaver 远程管理数据库,必须依次放行网络端口并授权账号。首先配置系统防火墙,运行 firewall-cmd --zone=public --add-port=3306/tcp --permanent 添加规则,随后执行 firewall-cmd --reload 使配置生效。如果是阿里云或腾讯云等云服务器,还需登录控制台的安全组页面,手动添加入方向 3306 端口的放行策略。接着进入 MySQL 命令行,执行 grant all privileges on *.* to 'root'@'%' identified by '刚才设置的密码' with grant option; 允许任意 IP 连接。最后务必执行 flush privileges; 刷新权限表。出于安全考虑,生产环境强烈建议新建普通业务账号,授予最小必要权限,切勿长期暴露 root 账户。
修改默认字符集与后续维护
MySQL 5.7 默认字符集通常为 latin1,存储中文数据时容易出现乱码。解决办法是编辑 /etc/my.cnf 配置文件,在 [mysqld] 区块下方追加 character-set-server=utf8mb4 和 collation-server=utf8mb4_unicode_ci 两行参数。保存退出后重启 mysqld 服务,再次进入数据库执行 show variables like 'character_set_server'; 验证是否已变更为 utf8mb4。该字符集完全兼容 emoji 表情和多语言混合文本,是目前 Web 开发的标准选择。日常运维中,建议定期通过 crontab 编写备份脚本,利用 mysqldump 导出核心库文件至异地存储。同时关注 /var/lib/mysql 所在分区的磁盘水位线,监控慢查询日志并及时优化索引,能大幅降低数据库宕机风险。



