CentOS 8 部署 MySQL 数据库详尽操作手册

本文将详细介绍在 CentOS 8 上安装、配置 MySQL 8.0 的完整流程,并针对 mysqld 服务启动异常 提供解决方案,确保您能顺利部署并管理 MySQL 数据库。


一、环境准备

1. 系统要求

  • 操作系统:CentOS 8 或更高版本(x86_64 架构)。
  • 网络连接:确保服务器可访问互联网(用于下载 MySQL 安装包)。
  • 权限要求 :需具备 rootsudo 权限。

2. 关闭 SELinux(可选)

SELinux 可能会阻止 MySQL 正常运行,建议临时关闭:

bash 复制代码
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

说明:生产环境建议配置 SELinux 策略而非直接关闭。

3. 更新系统软件包

bash 复制代码
sudo dnf update -y

二、安装 MySQL 8.0

1. 添加 MySQL Yum 仓库

MySQL 官方提供 Yum 仓库,简化安装流程:

bash 复制代码
sudo dnf install -y wget
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
sudo dnf localinstall mysql80-community-release-el8-1.noarch.rpm -y

2. 安装 MySQL 服务器

bash 复制代码
sudo dnf install -y mysql-community-server

3. 启动 MySQL 服务

bash 复制代码
sudo systemctl start mysqld
sudo systemctl enable mysqld  # 设置开机自启

4. 检查服务状态

bash 复制代码
sudo systemctl status mysqld
  • 正常状态active (running)
  • 异常状态 :若显示 failed,需排查问题(见 三、异常处理)。

三、初始化 MySQL 配置

1. 获取临时 root 密码

MySQL 安装后会自动生成临时密码,存储在日志文件中:

bash 复制代码
sudo grep 'temporary password' /var/log/mysqld.log
  • 若未找到密码 :可能是初始化未完成或日志路径错误(见 异常处理)。

2. 登录 MySQL 并修改密码

使用临时密码登录:

bash 复制代码
mysql -u root -p

输入密码后,执行以下命令修改密码(替换 YourNewPassword@123):

sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewPassword@123';

密码要求:MySQL 8.0 默认要求密码包含大小写字母、数字和特殊字符。

3. 运行安全配置脚本

提高安全性(移除匿名用户、禁止 root 远程登录等):

bash 复制代码
sudo mysql_secure_installation

按提示操作即可。


四、配置 MySQL 远程访问(可选)

1. 修改 MySQL 配置文件

编辑 /etc/my.cnf,在 [mysqld] 部分添加:

ini 复制代码
bind-address = 0.0.0.0  # 允许所有 IP 访问

2. 创建远程访问用户

登录 MySQL 后执行:

sql 复制代码
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'RemoteUserPassword@123';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3. 重启 MySQL 服务

bash 复制代码
sudo systemctl restart mysqld

4. 开放防火墙端口

bash 复制代码
sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent
sudo firewall-cmd --reload

五、异常处理:mysqld 服务启动失败

1. 检查错误日志

默认日志路径为 /var/log/mysqld.log,若未找到密码或服务启动失败,执行:

bash 复制代码
sudo journalctl -xe | grep mysqld  # 查看系统日志
sudo tail -n 50 /var/log/mysqld.log  # 查看 MySQL 日志

2. 常见问题及解决方案

问题 1:未生成临时密码
  • 原因:初始化未完成或日志路径错误。
  • 解决
    1. 手动初始化:

      bash 复制代码
      sudo mysqld --initialize --user=mysql
    2. 检查日志路径(如 /var/log/mysql/error.log)。

问题 2:端口冲突
  • 现象Address already in use
  • 解决
    1. 查找占用端口的进程:

      bash 复制代码
      sudo lsof -i :3306
    2. 终止进程或修改 MySQL 端口(编辑 /etc/my.cnf)。

问题 3:数据目录权限错误
  • 现象Permission denied

  • 解决

    bash 复制代码
    sudo chown -R mysql:mysql /var/lib/mysql
    sudo chmod -R 750 /var/lib/mysql
问题 4:配置文件错误
  • 现象Unknown variable 'xxx'
  • 解决
    1. 检查 /etc/my.cnf 是否有语法错误。

    2. 临时使用默认配置启动:

      bash 复制代码
      sudo mysqld --defaults-file=/etc/my.cnf --skip-grant-tables
问题 5:MySQL 崩溃或数据损坏
  • 解决
    1. 备份数据目录 /var/lib/mysql

    2. 重新初始化:

      bash 复制代码
      sudo rm -rf /var/lib/mysql/*
      sudo mysqld --initialize --user=mysql

六、测试 MySQL 连接

1. 本地测试

bash 复制代码
mysql -u root -p

2. 远程测试

bash 复制代码
mysql -h <Server_IP> -u remote_user -p

七、总结

  1. 安装流程:添加仓库 → 安装 → 启动服务 → 初始化密码 → 安全配置。
  2. 远程访问 :修改 bind-address + 创建用户 + 开放防火墙。
  3. 异常处理:优先检查日志,针对性解决端口、权限、配置问题。

通过本文步骤,您可顺利在 CentOS 8 上部署 MySQL 8.0,并具备基本的故障排查能力。如有其他问题,欢迎留言讨论!

相关推荐
星星也在雾里2 小时前
Dify配置PostgreSQL数据库连接详细教程
数据库
云边有个稻草人2 小时前
MySQL 监控实战:mysql_exporter 部署与远程监控实现
数据库·mysql
未来转换2 小时前
Python 框架 Django 从入门到精通
数据库·python·django
LSL666_2 小时前
MybatisPlus——代码生成器
数据库·mybatisplus
小小AK2 小时前
吉客云与MySQL数据集成方案
数据库·mysql
shengli7223 小时前
Python在金融科技(FinTech)中的应用
jvm·数据库·python
xcLeigh3 小时前
IoTDB Python原生接口全攻略:从基础读写到高级实战
开发语言·数据库·python·api·iotdb·原生接口·读写数据
xcLeigh3 小时前
Python操作国产金仓数据库(KingbaseES)全流程:从环境搭建到实战应用
开发语言·数据库·python·国产数据库·kingbasees·金仓数据库
人道领域4 小时前
Day | 11 【苍穹外卖统计业务的实现:含详细思路分析】
java·数据库·后端·苍穹外卖