在CentOS系统中配置MySQL是许多开发者和系统管理员的常见任务,本文将详细介绍从安装到基本配置的全过程,确保您能够顺利搭建和运行MySQL数据库环境。
安装MySQL官方Yum仓库
需要添加MySQL官方的Yum仓库,CentOS 7及更高版本推荐使用MySQL 8.0版本,执行以下命令下载并添加MySQL官方Yum仓库:
sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm -y
安装完成后,可以通过以下命令验证仓库是否添加成功:
sudo yum repolist enabled | grep ".*\.\(.*\)\..*" | grep ".*MySQL.*"
如果看到MySQL 8.0 Community的相关信息,说明仓库配置正确。
安装MySQL服务器
添加仓库后,即可使用Yum安装MySQL服务器,执行以下命令:
sudo yum install mysql-community-server -y
安装过程可能需要几分钟时间,具体取决于服务器的网络速度和性能,安装完成后,启动MySQL服务并设置为开机自启:
sudo systemctl start mysqld sudo systemctl enable mysqld
使用以下命令检查MySQL服务状态:
sudo systemctl status mysqld
如果显示"active (running)",则表示服务运行正常。
获取临时root密码
MySQL安装完成后,会为root用户生成一个临时密码,可以通过以下命令在日志文件中查找:
sudo grep 'temporary password' /var/log/mysqld.log
复制输出的临时密码,后续登录时需要使用。
安全配置向导
MySQL提供了安全配置脚本,用于设置root密码、移除匿名用户等,执行以下命令启动向导:
sudo mysql_secure_installation
按照提示操作:
- 输入临时root密码
- 设置新密码(建议包含大小写字母、数字和特殊字符)
- 移除匿名用户(选择Y)
- 禁止root远程登录(根据需求选择,生产环境建议禁止)
- 移除测试数据库(选择Y)
- 重新加载权限表(选择Y)
配置MySQL远程访问
如果需要从远程客户端连接MySQL,需要修改配置文件,首先编辑MySQL配置文件:
sudo vi /etc/my.cnf
在[mysqld]部分添加以下内容:
bind-address = 0.0.0.0
保存后重启MySQL服务:
sudo systemctl restart mysqld
然后登录MySQL,创建允许远程访问的用户:
mysql -u root -p CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%'; FLUSH PRIVILEGES;
防火墙配置
确保防火墙允许MySQL端口(默认3306)的访问,执行以下命令:
sudo firewall-cmd --permanent --add-port=3306/tcp sudo firewall-cmd --reload
数据库和用户管理
创建新数据库和用户是基本操作,以下示例创建一个名为myapp_db的数据库和myapp_user用户:
CREATE DATABASE myapp_db; CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'UserPassword123!'; GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost'; FLUSH PRIVILEGES;
性能优化基础
MySQL的性能优化需要根据实际负载调整,首先检查默认配置文件:
sudo vi /etc/my.cnf.d/mysql-defaults.cnf
常见的优化参数包括:
innodb_buffer_pool_size:建议设置为系统内存的50%-70%max_connections:根据并发需求调整query_cache_size:MySQL 8.0已移除查询缓存,无需配置
修改后重启MySQL服务使配置生效。
备份与恢复
定期备份数据库至关重要,使用mysqldump工具进行备份:
mysqldump -u root -p myapp_db > myapp_db_backup.sql
恢复数据库:
mysql -u root -p myapp_db < myapp_db_backup.sql
常见问题排查
如果遇到MySQL无法启动,检查日志文件:
sudo tail -f /var/log/mysqld.log
常见问题包括权限不足、配置文件错误或磁盘空间不足。
FAQs
Q1: 如何重置MySQL root密码?
A1: 如果忘记root密码,可以按以下步骤重置:
- 停止MySQL服务:
sudo systemctl stop mysqld - 跳过权限表启动:
sudo mysqld_safe --skip-grant-tables & - 无密码登录:
mysql -u root - 执行以下命令重置密码:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!'; FLUSH PRIVILEGES;
- 重启MySQL服务:
sudo systemctl restart mysqld
Q2: MySQL服务启动失败怎么办?
A2: 首先检查错误日志:sudo tail -f /var/log/mysqld.log,常见原因包括:
- 端口被占用:使用
netstat -tlnp | grep 3306检查 - 配置文件错误:验证
/etc/my.cnf语法 - 磁盘空间不足:使用
df -h检查 - 权限问题:确保
/var/lib/mysql目录属主为mysql用户