本文将详细介绍在 CentOS 8 上安装、配置 MySQL 8.0 的完整流程,并针对 mysqld 服务启动异常 提供解决方案,确保您能顺利部署并管理 MySQL 数据库。
一、环境准备
1. 系统要求
- 操作系统:CentOS 8 或更高版本(x86_64 架构)。
- 网络连接:确保服务器可访问互联网(用于下载 MySQL 安装包)。
- 权限要求 :需具备
root或sudo权限。
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:未生成临时密码
- 原因:初始化未完成或日志路径错误。
- 解决 :
-
手动初始化:
bashsudo mysqld --initialize --user=mysql -
检查日志路径(如
/var/log/mysql/error.log)。
-
问题 2:端口冲突
- 现象 :
Address already in use。 - 解决 :
-
查找占用端口的进程:
bashsudo lsof -i :3306 -
终止进程或修改 MySQL 端口(编辑
/etc/my.cnf)。
-
问题 3:数据目录权限错误
-
现象 :
Permission denied。 -
解决 :
bashsudo chown -R mysql:mysql /var/lib/mysql sudo chmod -R 750 /var/lib/mysql
问题 4:配置文件错误
- 现象 :
Unknown variable 'xxx'。 - 解决 :
-
检查
/etc/my.cnf是否有语法错误。 -
临时使用默认配置启动:
bashsudo mysqld --defaults-file=/etc/my.cnf --skip-grant-tables
-
问题 5:MySQL 崩溃或数据损坏
- 解决 :
-
备份数据目录
/var/lib/mysql。 -
重新初始化:
bashsudo 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
七、总结
- 安装流程:添加仓库 → 安装 → 启动服务 → 初始化密码 → 安全配置。
- 远程访问 :修改
bind-address+ 创建用户 + 开放防火墙。 - 异常处理:优先检查日志,针对性解决端口、权限、配置问题。
通过本文步骤,您可顺利在 CentOS 8 上部署 MySQL 8.0,并具备基本的故障排查能力。如有其他问题,欢迎留言讨论!