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,并具备基本的故障排查能力。如有其他问题,欢迎留言讨论!

相关推荐
GanGanGanGan_1 分钟前
CentOS 7.9 glibc 2.17 源码编译升级到 glibc 2.31
linux·运维·centos·glibc
杨云龙UP2 小时前
SQL Server2022部署:Windows Server 2016下安装、SSMS配置、备份还原与1433端口放通全流程_20260508
运维·服务器·数据库·sql·sqlserver·2022
墨染天姬3 小时前
【AI】cursor提示词小技巧
前端·数据库·人工智能
古月-一个C++方向的小白4 小时前
MySQL数据库——数据类型
android·数据库·mysql
qq_413502025 小时前
如何创建CDB公共用户_C##前缀强制规则与CONTAINER=ALL
jvm·数据库·python
逸Y 仙X5 小时前
文章二十七:ElasticSearch ES查询模板(Search Template)高效复用实战
java·大数据·数据库·elasticsearch·搜索引擎·全文检索
m0_738120725 小时前
应急响应(重点)——记一次某公司流量应急溯源分析(附带下载链接)
服务器·前端·数据库·安全·web安全·网络安全
yexuhgu5 小时前
CSS如何利用-checked实现纯CSS手风琴折叠_通过状态选择器控制区域高度
jvm·数据库·python
2301_779622416 小时前
mysql如何通过主从备份实现读写分离_配置mysql架构模式
jvm·数据库·python