全文无废话、一步一命令、可直接复制、新手零失败适配场景:云服务器 / 物理机 / 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 一次成功不踩坑

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐