在CentOS系统中通过RPM包安装MySQL是一种稳定且兼容性良好的方式,尤其适合需要长期维护的生产环境,本文将详细介绍从准备工作到配置优化的完整流程,帮助用户高效完成MySQL的部署。
前期准备与依赖检查
在开始安装前,需确保系统满足基本要求并清理旧版本,首先更新系统软件源:
sudo yum update -y
接着检查是否已安装旧版MySQL或MariaDB,避免冲突:
rpm -qa | grep mysql rpm -qa | grep mariadb
若存在旧版本,使用以下命令卸载:
sudo yum remove mysql-community-server mysql-community-client -y # 卸载MySQL sudo yum remove mariadb-libs -y # 卸载MariaDB
下载与安装MySQL RPM包
访问MySQL官方仓库选择对应版本的RPM包(以CentOS 7为例):
- 添加官方YUM仓库:
wget https://repo.mysql.com/mysql80-community-release-el7-11.noarch.rpm sudo rpm -Uvh mysql80-community-release-el7-11.noarch.rpm
- 选择MySQL版本:默认启用最新稳定版(如8.0),可通过编辑
/etc/yum.repos.d/mysql-community.repo
调整:[mysql80-community] enabled=1 # 启用8.0版本 [mysql57-community] enabled=0 # 禁用5.7版本
- 安装MySQL服务器:
sudo yum install mysql-community-server -y
安装完成后,验证服务状态:
systemctl status mysqld
初始化配置与安全加固
首次启动MySQL会自动生成临时root密码,需及时修改以提高安全性:
- 获取初始密码:
sudo grep 'temporary password' /var/log/mysqld.log
- 运行安全脚本:
sudo mysql_secure_installation
按提示设置新密码(需符合复杂度要求)、删除匿名用户、禁止远程root登录等。
核心配置优化
通过修改/etc/my.cnf
文件调整关键参数,提升性能与稳定性:
| 参数 | 建议值 | 说明 |
|———————|————–|————————–|
| innodb_buffer_pool_size
| 物理内存的70% | 缓存InnoDB数据页 |
| max_connections
| 500-1000 | 最大并发连接数 |
| character_set_server
| utf8mb4 | 字符集(支持 emoji) |
| default_storage_engine
| InnoDB | 默认存储引擎 |
示例配置片段:
[mysqld] innodb_buffer_pool_size = 2G max_connections = 800 character_set_server = utf8mb4 collation_server = utf8mb4_unicode_ci
服务管理与日常运维
服务控制
systemctl start mysqld # 启动服务 systemctl stop mysqld # 停止服务 systemctl restart mysqld # 重启服务 systemctl enable mysqld # 开机自启
日志监控
MySQL错误日志位于/var/log/mysqld.log
,定期检查可及时发现异常:
tail -f /var/log/mysqld.log
备份策略
推荐使用mysqldump
进行逻辑备份:
mysqldump -u root -p --all-databases > full_backup_$(date +%F).sql
常见问题排查
若遇到启动失败,可通过以下步骤定位:
- 检查端口占用:
netstat -tuln | grep 3306
- 查看错误日志:
cat /var/log/mysqld.log | grep ERROR
- 验证配置文件语法:
mysql --verbose --help | grep my.cnf
相关问答FAQs
Q1:安装过程中提示“依赖关系失败”,如何解决?
A:通常因缺少libaio
库导致,执行sudo yum install libaio -y
后重新安装即可。
Q2:忘记MySQL root密码怎么办?
A:
- 停止MySQL服务:
systemctl stop mysqld
- 以安全模式启动:
mysqld_safe --skip-grant-tables &
- 无密码登录并重置密码:
USE mysql; UPDATE user SET authentication_string=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES;
- 正常重启服务完成修复。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复