centos 7安装mysql应优先使用官方yum仓库,先卸载mariadb避免端口与配置冲突,再下载对应el7的mysql80或mysql57仓库rpm包并rpm -ivh安装,验证后yum install mysql-community-server,启动服务后从/var/log/mysqld.log获取临时密码,运行mysql_secure_installation完成安全配置。

CentOS 7 上装 MySQL,用官方 Yum 仓库是最稳妥的选择——省去编译依赖、避免路径混乱、后续升级也干净。别碰源码编译或手动解压 tar 包,除非你明确需要定制 build 或锁定某个冷门版本。
卸载 MariaDB 再动手,否则服务起不来
CentOS 7 默认装了 mariadb,它和 mysqld 共享端口、套接字、甚至部分配置项,不清理就会冲突:
- 先停服务:
systemctl stop mariadb.service 2>/dev/null和systemctl stop mysqld 2>/dev/null - 查已安装包:
rpm -qa | grep -E "(mariadb|mysql)",把带mariadb-或旧版mysql-的全干掉 - 执行:
yum remove -y mariadb-libs mysql-community-common(注意别漏掉mariadb-libs,它常被其他包依赖,但必须强制删) -
备份:
/etc/my.cnf和/var/lib/mysql(如果里面存了数据)
选对 RPM 包,el7 和版本号不能错
MySQL 官方仓库 RPM 包名含系统标识,el7 表示 Enterprise Linux 7,不是 CentOS 7.9 或 7.6 的区别,而是整个 CentOS 7 系列通用:
MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。
- MySQL 8.0:
wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm - MySQL 5.7:
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm - 装包命令是
rpm -ivh *.rpm,不是yum install—— 否则会报“no package found” - 验证是否生效:
yum repolist enabled | grep mysql,应看到类似mysql80-community/7/x86_64的条目
安装后首次启动必看日志找密码
systemctl start mysqld 成功不代表能登录——MySQL 5.7+ 默认生成临时 root 密码,不从日志里抄出来,mysql -u root -p 一定失败:
- 密码藏在:
grep "temporary password" /var/log/mysqld.log - 输出形如:
A temporary password is generated for root@localhost: xK9#qL2!mNp@ - 登录后立刻改密:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass123!'; - 如果卡在“password validation policy”,说明新密码太弱,加大小写字母、数字、符号组合
防火墙和 SELinux 不关也得配准
开 3306 端口只是基础,SELinux 默认阻止 mysqld 访问非标准路径的数据目录(比如你自定义 datadir=/data/mysql):
- 临时放行 SELinux:
setenforce 0(仅测试用) - 永久方案(推荐):
semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?",再restorecon -Rv /data/mysql - 防火墙只开必要端口:
firewall-cmd --permanent --add-port=3306/tcp,然后firewall-cmd --reload - 远程连不上?检查
bind-address是否为127.0.0.1(默认),要允许远程需改成0.0.0.0或具体 IP,并确保root用户有对应 host 权限
真正麻烦的不是装上,而是 datadir 权限、SELinux 上下文、密码策略这三处——它们不出错时安静如鸡,一出错就让你在日志里翻半小时。










