1. CentOS 7.9系统初始化实战
刚拿到一台全新的CentOS 7.9服务器时,就像搬进毛坯房需要先通水电一样,系统初始化就是给服务器"通水电"的过程。我见过不少新手直接跳过了这个步骤,结果后面安装软件时各种报错,连不上网都找不到原因。下面这几个关键操作,建议每个运维新手都老老实实走一遍。
1.1 网络配置:让服务器能上网
首先得确认服务器能正常联网。执行ip address show会显示所有网卡信息,重点看有IP地址的那块网卡(通常是eth0或ens33)。如果发现没有IP,需要编辑网卡配置文件:
vi /etc/sysconfig/network-scripts/ifcfg-ens33把ONBOOT=no改为ONBOOT=yes,就像给网卡插上网线。保存后重启网络服务:
systemctl restart network测试下能否ping通百度:ping www.baidu.com。如果发现能ping通IP但ping不通域名,八成是DNS没配好,在/etc/resolv.conf里加上nameserver 8.8.8.8。
1.2 主机名设置:给服务器起个好记的名字
默认的主机名都是localhost.localdomain,在多台服务器环境下很容易搞混。用这个命令永久修改主机名:
hostnamectl set-hostname mysql-server我习惯用-server后缀表示这是服务器,比如web-server、db-server等。修改后需要重新登录才能生效,可以用hostname命令验证。
1.3 主机名解析:让服务器之间能互相认识
光改主机名还不够,还得在/etc/hosts文件里加上解析记录:
192.168.1.100 mysql-server 192.168.1.101 web-server这就好比给手机通讯录存号码,有了这个记录,服务器之间就能通过主机名互相访问了。特别是在搭建集群时,这一步绝对不能省。
2. 软件源配置:安装软件的"应用商店"
CentOS默认的软件源在国外,下载速度慢得像蜗牛。换成国内镜像源后,安装速度能提升10倍不止。阿里云的源是我用过最稳定的,配置方法也简单:
2.1 备份原有源配置
先给原来的源配置文件做个备份,万一出问题还能回滚:
mkdir /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/2.2 配置阿里云镜像源
直接下载阿里云提供的repo文件:
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repoEPEL源相当于软件的"扩展商店",很多常用工具都在这里面。完成后更新缓存:
yum clean all yum makecache可以用yum repolist查看源是否配置成功。如果看到阿里云的URL,说明配置正确。
3. MySQL 5.7安装:企业级数据库部署
MySQL 5.7是目前企业中使用最广泛的稳定版本,比5.6性能更好,又比8.0兼容性更强。通过yum安装可以自动解决依赖问题,特别适合新手。
3.1 添加MySQL官方源
先下载MySQL的官方yum源配置:
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm rpm -ivh mysql57-community-release-el7-11.noarch.rpm这个rpm包会自动在/etc/yum.repos.d/下生成mysql-community.repo文件。打开这个文件,确保5.7版本的enabled=1,其他版本都设为0:
[mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/ enabled=1 gpgcheck=03.2 安装MySQL服务
执行安装命令前,建议先卸载系统自带的mariadb:
yum remove mariadb-libs -y然后安装MySQL服务器和客户端:
yum install mysql-community-server -y安装完成后启动服务并设置开机自启:
systemctl start mysqld systemctl enable mysqld检查服务状态应该是active (running):
systemctl status mysqld3.3 安全配置与初始化
MySQL第一次启动时会生成临时root密码,查看方法:
grep 'temporary password' /var/log/mysqld.log用这个密码登录后,必须立即修改密码:
mysql_secure_installation这个脚本会引导你完成一系列安全设置:
- 修改root密码(要求包含大小写字母、数字和特殊字符)
- 移除匿名用户
- 禁止root远程登录
- 删除测试数据库
- 重载权限表
建议全部选择Y,这是生产环境的基本安全要求。
4. 防火墙策略:安全与便利的平衡
防火墙是把双刃剑,配置太严会影响正常使用,太松又会带来安全隐患。根据实际需求选择合适策略很重要。
4.1 临时关闭防火墙(测试环境)
如果是本地测试环境,可以完全关闭防火墙:
systemctl stop firewalld systemctl disable firewalld但生产环境绝对不要这样做!我见过有人关了防火墙后服务器被挖矿的案例。
4.2 配置防火墙规则(生产环境)
生产环境应该只开放必要的端口。对于MySQL来说,默认需要开放3306端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload如果想限制只允许特定IP访问,可以用更安全的方案:
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="3306" accept'4.3 SELinux策略调整
SELinux是更深层次的安全机制,如果发现MySQL无法正常启动或访问,可以临时设置为宽松模式:
setenforce 0要永久关闭需要修改/etc/selinux/config文件,把SELINUX=enforcing改为SELINUX=disabled。不过建议先尝试用semanage命令调整策略,而不是直接关闭SELinux。
5. MySQL基础配置与优化
安装完成后,还需要进行一些基础配置才能发挥最佳性能。配置文件通常位于/etc/my.cnf。
5.1 字符集设置
为避免中文乱码问题,建议统一使用utf8mb4字符集:
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci5.2 内存参数调优
根据服务器内存大小调整关键参数,以下配置适合2GB内存的服务器:
innodb_buffer_pool_size=1G key_buffer_size=256M query_cache_size=128M5.3 连接数配置
默认的连接数可能不够用,可以适当增加:
max_connections=200 wait_timeout=300修改配置后记得重启MySQL服务:
systemctl restart mysqld6. 远程访问与用户管理
默认情况下MySQL只允许本地连接,要允许远程访问需要额外配置。
6.1 创建专用数据库用户
不建议直接用root用户远程连接,应该创建专用用户:
CREATE USER 'webuser'@'192.168.1.%' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON webdb.* TO 'webuser'@'192.168.1.%'; FLUSH PRIVILEGES;这里限制只允许192.168.1网段的IP访问webdb数据库,安全性更高。
6.2 测试远程连接
在其他机器上用mysql客户端测试连接:
mysql -h192.168.1.100 -uwebuser -p如果连接失败,检查以下几点:
- 防火墙是否开放了3306端口
- MySQL用户是否有远程访问权限
- 是否绑定了正确的主机名/IP
7. 常见问题排查指南
即使按照步骤操作,也可能会遇到各种问题。这里分享几个我踩过的坑。
7.1 安装失败:依赖冲突
如果安装时报依赖错误,可能是之前安装过其他版本的MySQL。先彻底清理旧版本:
yum remove mysql mysql-server rm -rf /var/lib/mysql rm -rf /etc/my.cnf7.2 启动失败:权限问题
MySQL启动时报错"Could not create file"通常是/var/lib/mysql目录权限不对:
chown -R mysql:mysql /var/lib/mysql chmod -R 755 /var/lib/mysql7.3 连接缓慢:DNS反查
如果连接MySQL特别慢,可能是DNS反查导致的。在my.cnf中添加:
[mysqld] skip-name-resolve8. 备份与恢复策略
数据库最重要的就是数据安全,定期备份是必须的。
8.1 使用mysqldump备份
最简单的全量备份方法:
mysqldump -uroot -p --all-databases > full_backup.sql8.2 定时自动备份
用crontab设置每天凌晨3点自动备份:
0 3 * * * /usr/bin/mysqldump -uroot -p'password' --all-databases > /backup/mysql_$(date +\%Y\%m\%d).sql8.3 数据恢复测试
备份的价值在于能恢复,建议定期测试备份文件是否有效:
mysql -uroot -p < full_backup.sql9. 性能监控与优化建议
数据库运行一段时间后,需要关注性能指标。
9.1 查看运行状态
SHOW STATUS LIKE 'Threads_connected'; SHOW STATUS LIKE 'Innodb_buffer_pool_read%';9.2 慢查询日志
开启慢查询日志可以帮助发现性能瓶颈:
slow_query_log=1 slow_query_log_file=/var/log/mysql-slow.log long_query_time=29.3 定期维护
建议每周执行一次表优化:
OPTIMIZE TABLE important_table;10. 升级与迁移注意事项
当需要升级MySQL版本时,要注意以下几点:
10.1 版本兼容性检查
先查看官方文档,确认5.7到目标版本的升级路径。有些大版本需要逐步升级。
10.2 测试环境验证
一定要先在测试环境验证升级过程,我见过直接在生产环境升级导致数据损坏的惨案。
10.3 回滚方案准备
准备完善的回滚方案,包括:
- 完整的数据备份
- 旧版本的安装包
- 回滚操作步骤文档