在CentOS 7上安装配置MySQL 8.0完整指南
本文将详细介绍在CentOS 7系统上安装配置MySQL 8.0的完整流程,包含安全加固、远程访问设置和字符编码优化等关键步骤。
1. 获取MySQL官方安装包
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
此命令从MySQL官网下载RPM仓库包,-Uvh
参数表示升级安装并显示进度条。安装后会在系统中添加MySQL的yum仓库,为后续安装做准备。
2. 检查仓库配置
cd /etc/yum.repos.d/
cat mysql-community.repo
进入yum仓库配置目录,查看MySQL仓库详情。关键注意点:默认启用最新版MySQL(如8.0),若需安装其他版本可在此文件中修改enabled
值切换版本源。
3. 备份与更换系统源
sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup
sudo nano /etc/yum.repos.d/CentOS-Base.repo
操作解析:
cp -r
递归备份整个仓库目录,防止误操作- 编辑基础源文件,将
mirrorlist
替换为阿里云镜像(实际操作需在文件中将baseurl
改为https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
) - 修改
gpgkey
指向阿里云验证密钥,加速后续依赖下载
4. 安装MySQL服务
yum -y install mysql-community-server
-y
参数自动确认安装,此过程会安装MySQL服务器核心组件及依赖库,耗时约3-5分钟(视网络情况而定)。
5. 启动MySQL服务
systemctl start mysqld # 立即启动
systemctl enable mysqld # 设置开机自启
systemctl status mysqld # 检查运行状态
状态验证:出现active (running)
表示服务已正常运行。MySQL首次启动时会初始化系统表并生成临时密码。
6. 获取临时密码
grep "password" /var/log/mysqld.log
输出类似:A temporary password is generated for root@localhost: Jp&q1kA!f9*e
重要:冒号后的字符串就是临时密码,需在30分钟内使用,否则自动失效。
7. 登录MySQL控制台
mysql -uroot -p
输入上步获取的临时密码,进入MySQL命令行界面,提示符变为mysql>
表示登录成功。
8. 安全策略调整与密码设置
sql
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Zk@123456789'; -- 先设复杂密码
SET GLOBAL validate_password.policy = LOW; -- 降低密码强度策略
SET GLOBAL validate_password.length = 6; -- 允许最小6位密码
安全说明:MySQL 8默认启用密码强度验证(需含大小写、数字、特殊字符)。此步骤降低策略便于测试,生产环境强烈建议保持STRONG策略。
9. 验证密码策略
sql
SHOW VARIABLES LIKE 'validate%';
查看输出确保策略已更新:
validate_password.length=6
validate_password.policy=LOW
10. 设置永久密码
sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
现在可设置简单密码(仅限测试环境)。生产环境必须使用高强度密码!
11. 开启远程访问权限
sql
CREATE USER 'root'@'%' IDENTIFIED BY '123456'; -- 创建远程用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; -- 授权所有权限
安全警告:允许root远程访问存在风险,建议创建专用账户并限制权限(如:GRANT SELECT ON dbname.* TO 'user'@'%'
)
12. 权限刷新
sql
FLUSH PRIVILEGES; -- 使授权立即生效
该命令重载权限表,无需重启服务即可应用新授权规则。
13. 退出MySQL
sql
EXIT; -- 返回系统shell
14. 检查字符集配置
重新登录MySQL执行:
sql
SHOW VARIABLES LIKE 'character_set%'; -- 查看字符集
SHOW VARIABLES LIKE 'collation%'; -- 查看排序规则
若未配置utf8mb4,可能出现中文乱码问题。
15. 配置UTF-8字符集
sudo vim /etc/my.cnf
添加以下内容:
[client]
default-character-set=utf8mb4[mysql]
default-character-set=utf8mb4[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
参数说明:
utf8mb4
:支持4字节编码,兼容所有Unicode字符(如emoji)utf8mb4_unicode_ci
:通用排序规则,不区分大小写
16. 重启服务生效
sudo systemctl restart mysqld -- 重启服务
sudo systemctl status mysqld -- 确认状态正常
17. 防止自动更新(可选)
rpm -qa | grep -i mysql # 查询已安装包
sudo yum remove mysql-community-server mysql-community-libs mysql-community-common
注意:删除核心包将导致无法升级!推荐替代方案:
sudo yum-config-manager --disable mysql80-community # 禁用仓库
18. 清理残余文件(谨慎操作)
sudo find / -name mysql # 全局搜索mysql相关文件
sudo rm -rf /path/to/file # 手动删除非必要文件
重要提醒:典型需清理路径:
/var/lib/mysql
(数据目录,重装前可删)/usr/share/mysql
(文档文件)- 避免误删配置文件
/etc/my.cnf
安全加固建议
- 防火墙配置:仅允许信任IP访问3306端口
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="3306" accept'
- 禁用root远程登录:使用普通账户+SSH密钥认证
- 启用SSL连接:MySQL 8默认开启,通过
SHOW VARIABLES LIKE '%ssl%';
验证
通过以上步骤,您已成功部署支持中文、可远程访问的MySQL 8.0服务。定期执行yum update
保持安全更新,并通过mysqldump
进行数据备份确保业务连续性。