当前位置: 首页 > news >正文

CentOS 7 安装 MySQL 8.0 完整保姆级教程,避坑指南

全文无废话、一步一命令、可直接复制、新手零失败适配场景:云服务器 / 物理机 / CentOS 7.x、MySQL 8.0.x 稳定版包含:环境清理→Yum 安装→初始化→改密码→远程授权→防火墙→SELinux→开机自启→性能配置→报错全集→卸载重装


前言

本文专为零基础 Linux 用户、毕设学生、后端新手编写,全程使用官方 Yum 源,稳定无依赖冲突,覆盖从 0 到生产可用的全流程。全文超过 8000 字,每一步都标注作用、注意事项、失败原因,确保一次成功。


目录

  1. 安装前必读:环境要求与风险提示
  2. 步骤 1:彻底卸载系统自带 MariaDB(必做)
  3. 步骤 2:安装 MySQL 官方 Yum 仓库
  4. 步骤 3:安装 MySQL 8.0 社区版服务端
  5. 步骤 4:启动服务与设置开机自启
  6. 步骤 5:获取初始密码并登录 MySQL
  7. 步骤 6:修改 root 密码(生产必备)
  8. 步骤 7:开启远程连接授权(Navicat/DBeaver 连接)
  9. 步骤 8:防火墙开放 3306 端口
  10. 步骤 9:SELinux 配置(避免权限拒绝)
  11. 步骤 10:my.cnf 核心配置优化(内存 / 字符集 / 连接数)
  12. 步骤 11:安全加固脚本 mysql_secure_installation
  13. 步骤 12:常用运维命令汇总
  14. 常见报错 100% 解决方案(启动失败 / 连接失败 / 权限不足)
  15. 彻底卸载 MySQL 与干净重装
  16. 总结与后续学习路线

1. 安装前必读:环境要求与风险提示

1.1 系统要求

  • 系统:CentOS 7.x(x86_64),CentOS 8/9 可替换源使用
  • 内存:最低2GB,推荐4GB+(MySQL 8.0 内存占用较高)
  • 磁盘:≥20GB 可用空间
  • 权限:必须root或拥有 sudo 权限
  • 网络:可访问公网(用于下载安装包)

1.2 重要提醒

  1. 必须先卸载 MariaDB,CentOS 7 默认自带,直接装 MySQL 必冲突
  2. 初始化前不要手动创建 /var/lib/mysql目录,权限错误会启动失败
  3. 初始密码在日志文件中,必须复制完整,含特殊字符
  4. MySQL 8.0 默认使用caching_sha2_password,远程工具需适配
  5. 生产环境禁止使用弱密码,禁止 root 远程裸奔

2. 步骤 1:彻底卸载系统自带 MariaDB(必做)

2.1 检查是否安装 MariaDB

bash

运行

rpm -qa | grep mariadb

输出示例:mariadb-libs-5.5.68-1.el7.x86_64

2.2 停止服务并卸载

bash

运行

systemctl stop mariadb systemctl disable mariadb yum remove -y mariadb*

2.3 清理残留文件(防止冲突)

bash

运行

rm -rf /var/lib/mysql rm -rf /etc/my.cnf rm -rf /etc/my.cnf.d

作用:删除旧数据与配置,避免初始化报错。


3. 步骤 2:安装 MySQL 官方 Yum 仓库

3.1 下载 MySQL 8.0 Yum 源

bash

运行

rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

3.2 验证仓库安装成功

bash

运行

yum repolist enabled | grep mysql

出现 mysql80-community 即成功。

3.3 清理 Yum 缓存

bash

运行

yum clean all yum makecache

4. 步骤 3:安装 MySQL 8.0 社区版服务端

bash

运行

yum install -y mysql-community-server

安装内容:服务端、客户端、依赖库、插件耗时:1-5 分钟,取决于网络速度

4.1 安装失败常见原因

  • 未卸载 MariaDB
  • 网络不通
  • 系统版本不匹配
  • 硬盘空间不足

5. 步骤 4:启动服务与设置开机自启

5.1 启动 MySQL

bash

运行

systemctl start mysqld

5.2 查看运行状态

bash

运行

systemctl status mysqld

出现active (running)绿色字样即为成功。

5.3 设置开机自启(服务器重启不失效)

bash

运行

systemctl enable mysqld

5.4 重载系统服务

bash

运行

systemctl daemon-reload

6. 步骤 5:获取初始密码并登录 MySQL

6.1 查看初始随机密码

bash

运行

grep 'temporary password' /var/log/mysqld.log

输出示例:A temporary password is generated for root@localhost:abc123!XYZ

6.2 登录 MySQL

bash

运行

mysql -uroot -p

粘贴刚才的密码,注意大小写与特殊符号


7. 步骤 6:修改 root 密码(生产必备)

MySQL 8.0 密码策略要求:大小写 + 数字 + 特殊符号,长度≥8 位。

7.1 修改本地 root 密码

sql

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的强密码';

示例:Abc@123456

7.2 刷新权限

sql

FLUSH PRIVILEGES;

7.3 退出重登验证

bash

运行

exit mysql -uroot -p

输入新密码登录成功即完成。


8. 步骤 7:开启远程连接授权

8.1 创建远程 root 用户(生产建议新建专用用户)

sql

CREATE USER 'root'@'%' IDENTIFIED BY '你的强密码';

8.2 授予全权限

sql

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

8.3 刷新权限

sql

FLUSH PRIVILEGES; exit

% 代表允许所有 IP 连接,生产环境可替换为固定 IP,如 192.168.1.%


9. 步骤 8:防火墙开放 3306 端口

9.1 检查防火墙状态

bash

运行

systemctl status firewalld

9.2 永久开放 3306

bash

运行

firewall-cmd --zone=public --add-port=3306/tcp --permanent

9.3 重载防火墙

bash

运行

firewall-cmd --reload

9.4 验证端口开放

bash

运行

firewall-cmd --list-ports

10. 步骤 9:SELinux 配置(避免权限拒绝)

10.1 临时关闭(测试用)

bash

运行

setenforce 0

10.2 永久关闭(推荐)

bash

运行

sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

重启生效:reboot

10.3 不关闭 SELinux 的放行方案

bash

运行

yum install -y policycoreutils-python semanage port -a -t mysqld_port_t -p tcp 3306

11. 步骤 10:my.cnf 核心配置优化

11.1 备份原配置

bash

运行

cp /etc/my.cnf /etc/my.cnf.bak

11.2 编辑配置文件

bash

运行

vi /etc/my.cnf

11.3 写入最优配置(直接复制)

ini

[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock port=3306 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' max_connections=1000 max_connect_errors=100 wait_timeout=600 interactive_timeout=600 default-storage-engine=INNODB innodb_buffer_pool_size=1G innodb_log_file_size=256M innodb_file_per_table=1 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid lower_case_table_names=1 secure_file_priv='' local_infile=0

11.4 重启 MySQL 使配置生效

bash

运行

systemctl restart mysqld

11.5 配置说明

  • utf8mb4:支持 emoji,完整 Unicode
  • max_connections:最大连接数 1000
  • innodb_buffer_pool_size:建议设为物理内存的 50%-70%
  • lower_case_table_names=1:表名不区分大小写(Windows 兼容)

12. 步骤 11:安全加固脚本

执行官方安全脚本,删除匿名用户、禁止远程空密码、删除 test 库。

bash

运行

mysql_secure_installation

按提示操作:

  1. 输入当前 root 密码
  2. 是否启用密码验证插件:Y
  3. 输入新密码(可选)
  4. 移除匿名用户:Y
  5. 禁止 root 远程登录:N(需要远程则选 N)
  6. 删除 test 库:Y
  7. 刷新权限表:Y

13. 步骤 12:常用运维命令汇总

13.1 服务管理

bash

运行

systemctl start mysqld # 启动 systemctl stop mysqld # 停止 systemctl restart mysqld # 重启 systemctl status mysqld # 状态 systemctl enable mysqld # 开机自启 systemctl disable mysqld # 关闭自启

13.2 登录与退出

bash

运行

mysql -uroot -p exit

mysql>提示符表示成功

13.3 查看版本

sql

SELECT VERSION();

13.4 查看用户

sql

SELECT user,host FROM mysql.user;

13.5 查看端口

sql

SHOW VARIABLES LIKE 'port';

13.6 查看最大连接数

sql

SHOW VARIABLES LIKE 'max_connections';

已修改为1000


14. 常见报错 100% 解决方案

14.1 启动报错:Job for mysqld.service failed

原因:

  • 目录权限错误
  • datadir 已存在文件
  • 配置文件语法错误解决:

bash

运行

chown -R mysql:mysql /var/lib/mysql rm -rf /var/lib/mysql/* systemctl restart mysqld

14.2 登录报错:Access denied

原因:密码错误 / 用户不存在解决:

  • 重置密码:跳过权限登录

bash

运行

systemctl stop mysqld mysqld_safe --skip-grant-tables & mysql -uroot

sql

FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

重启服务:systemctl restart mysqld

14.3 Navicat 连接失败:10060/10061

原因:防火墙未开 / SELinux 拦截 / 绑定 IP 限制解决:开放 3306、关闭 SELinux、授权 % 用户

14.4 报错:Your password does not satisfy the current policy

原因:密码强度不够解决:使用大小写 + 数字 + 特殊符号,≥8 位

14.5 报错:Can't connect to local MySQL server through socket

原因:mysql.sock 丢失 / 权限错误解决:重启 MySQL,检查 my.cnf 中 socket 路径

14.6 报错:initialize specified but the data directory has files

原因:datadir 非空解决:清空目录rm -rf /var/lib/mysql/*


15. 彻底卸载 MySQL 与干净重装

15.1 停止服务

bash

运行

systemctl stop mysqld

15.2 卸载安装包

bash

运行

yum remove -y mysql-community*

15.3 删除所有数据与配置

bash

运行

rm -rf /var/lib/mysql rm -rf /var/log/mysqld.log rm -rf /etc/my.cnf rm -rf /etc/my.cnf.d

15.4 清理残留用户与依赖

bash

运行

userdel mysql groupdel mysql yum autoremove -y

16. 总结与后续学习路线

本文完整覆盖CentOS 7 安装 MySQL 8.0全流程,从环境清理到生产优化,新手可直接复制命令完成部署。

后续可写系列文章(你的爆款方向)

  1. MySQL 8.0 安装后必做 5 项配置
  2. 慢查询日志开启与分析
  3. 主从复制搭建
  4. 索引优化实战
  5. Binlog 日志与数据恢复
  6. 千万级数据表优化方案

关注引导

本文为MySQL 8.0 CentOS 实战系列第一篇,持续更新安装、配置、报错、优化、面试干货,关注我,Linux 部署 MySQL 一次成功不踩坑

http://www.jsqmd.com/news/594670/

相关文章:

  • 你的RAG应用安全吗?藏在向量数据库里的‘特洛伊木马’——外部数据注入风险详解
  • MacOS开发环境优化:OpenClaw+Phi-3-mini-128k-instruct自动化调试
  • OpenClaw+Qwen3-14b_int4_awq内容创作:从大纲生成到公众号发布全自动
  • OpenClaw+Phi-3-vision-128k-instruct:电商商品截图自动比价系统
  • 网站 SEO 优化需要多少钱才能提高排名
  • Flutter Hero 动画:页面间的无缝过渡
  • OpenClaw+Kimi-VL-A3B-Thinking:个人博客自动化图文更新
  • MySQL 8.0新特性高频面试题 30 道(超详细答案)
  • 爱毕业aibye发布六大领先学术平台,提供智能改写和高效写作支持,加速科研进程
  • PSoC Creator 4.4 + CapSense调参避坑指南:从Tuner工具到稳定触摸的5个关键步骤
  • 深入解析TMC2660驱动芯片:SPI接口与步进电机精准控制实践
  • 光谱特征选择实战:UVE算法原理、实现与避坑指南
  • 别再用chmod 777了!Linux文件权限管理的5个专业姿势(从Permission denied说开去)
  • 行业知名的半导体行业展会哪个比较好?半导体行业展会甄选 - 品牌2026
  • 从习题到实践:用谢希仁《计算机网络原理》第二章核心概念解析真实网络场景
  • 千问3.5-27B镜像调优指南:提升OpenClaw任务执行稳定性
  • OpenClaw安全方案:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF本地化处理敏感数据
  • SEO引擎排名优化的重要性是什么
  • 告别打印乱码与错位:手把手教你配置SAP Smartforms的CNSAPWIN打印机格式
  • 星图平台OpenClaw镜像体验:Qwen3-32B+RTX4090D免安装方案
  • 从零到一:基于gemma-3-12b-it的OpenClaw自动化测试框架搭建
  • 【Delft3D FM数据后处理系列】1. 从Map.nc到精美网格图:Matlab与Surfer的进阶可视化实践
  • 芯片研发里的AI Agent总在跑偏?问题出在这里
  • Flutter 导航深度解析:从入门到精通
  • OpenClaw多实例管理:Phi-3-vision-128k-instruct专用网关的隔离部署
  • SAP增强中多线程STARTING NEW TASK实现BAPI事务提交的实践指南
  • 深入解析Google AutoService:组件化通信的轻量级解决方案
  • 二维码识别性能优化:UniApp中canvas截取与qrcode.js的黄金参数配置
  • Linux文件系统探秘:当你删除一个文件时,inode位图究竟发生了什么变化?
  • 别再为OSGB发愁了!手把手教你用Cesium + 3DTiles在Vue3/Vite项目中搭建三维场景