CentOS7 安装 MySQL 完整教程
前言:MySQL 是开源关系型数据库的主流选择,在 CentOS7 系统中安装 MySQL 时,需注意系统默认预装的 MariaDB 可能与 MySQL 存在冲突,同时要选择适配的 MySQL 版本(推荐 5.7 或 8.0 稳定版)。本文将详细讲解从环境准备、软件安装到基础配置的全流程,新手也能轻松上手。
一、安装前准备
1.1 卸载系统默认 MariaDB
CentOS7 最小化安装或默认安装时,会自带 MariaDB(MySQL 的分支),若不卸载会导致 MySQL 安装失败,执行以下命令完成卸载:
# 1. 查看已安装的 MariaDB 组件
rpm -qa | grep mariadb
# 2. 卸载对应组件(将查询结果替换下方示例组件名)
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
# 3. 验证卸载是否完成(无输出则说明卸载成功)
rpm -qa | grep mariadb
1.2 清理旧 MySQL 残留(若曾安装过)
若系统之前安装过 MySQL 但未完全卸载,需清理残留文件,避免影响新安装:
# 删除 MySQL 配置文件
rm -rf /etc/my.cnf
rm -rf /etc/my.cnf.d/
# 删除 MySQL 数据存储目录
rm -rf /var/lib/mysql/
# 删除 MySQL 日志文件
rm -rf /var/log/mysqld.log
1.3 安装依赖包
安装 MySQL 需依赖 libaio 等组件,执行以下命令安装:
yum install -y libaio-devel numactl-devel
二、安装 MySQL(以 5.7 版本为例)
2.1 下载 MySQL 官方 YUM 源
MySQL 官方提供了 CentOS 对应的 YUM 源,通过 YUM 安装可自动解决依赖问题,步骤如下:
# 下载 MySQL 5.7 YUM 源(适用于 CentOS7 x86_64)
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
# 安装 YUM 源
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
# 验证 YUM 源是否安装成功(出现 mysql57-community 相关内容则成功)
yum repolist enabled | grep mysql
2.2 安装 MySQL 服务
通过 YUM 安装 MySQL 社区版服务:
yum install -y mysql-community-server
说明:安装过程中会自动下载 MySQL 相关组件,等待时间根据网络环境而定,出现 "Complete!" 则说明安装完成。
三、MySQL 基础配置
3.1 启动 MySQL 服务并设置开机自启
# 启动 MySQL 服务
systemctl start mysqld
# 查看 MySQL 服务状态(active (running) 表示启动成功)
systemctl status mysqld
# 设置开机自启
systemctl enable mysqld
# 重载系统服务(使开机自启配置生效)
systemctl daemon-reload
3.2 获取初始密码
MySQL 5.7 安装完成后,会自动生成初始密码并存储在日志文件中,执行以下命令获取:
grep 'temporary password' /var/log/mysqld.log
输出示例:2024-05-20T08:30:00.123456Z 1 [Note] A temporary password is generated for root@localhost: Abc123!@#,其中 "Abc123!@#" 即为初始密码。
3.3 登录 MySQL 并修改初始密码
MySQL 默认要求密码复杂度较高(大小写字母+数字+特殊符号),需先登录后修改为符合要求的密码:
# 登录 MySQL(输入上一步获取的初始密码)
mysql -u root -p
# 修改密码(将 'NewPass123!@#' 替换为自定义密码)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!@#';
# 刷新权限(使密码修改生效)
FLUSH PRIVILEGES;
3.4 配置远程访问(可选)
默认情况下,MySQL 仅允许本地访问,若需从远程主机连接,需进行如下配置:
# 1. 登录 MySQL 后,授权 root 用户允许远程访问(% 表示所有远程主机,也可指定具体 IP)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'NewPass123!@#' WITH GRANT OPTION;
# 2. 刷新权限
FLUSH PRIVILEGES;
# 3. 退出 MySQL
exit;
同时,需开放 CentOS7 防火墙的 3306 端口(MySQL 默认端口):
# 开放 3306 端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重载防火墙配置
firewall-cmd --reload
# 验证端口是否开放成功
firewall-cmd --zone=public --query-port=3306/tcp
3.5 优化 MySQL 配置(可选)
默认配置可能无法满足实际业务需求,可修改 /etc/my.cnf 文件进行优化,常见优化项如下:
# 编辑配置文件
vi /etc/my.cnf
# 添加/修改以下配置项
[mysqld]
# 设置字符集为 UTF-8
character-set-server=utf8mb4
# 设置数据库默认存储引擎
default-storage-engine=InnoDB
# 设置最大连接数
max_connections=1000
# 设置临时表最大大小
tmp_table_size=64M
max_heap_table_size=64M
# 保存退出后,重启 MySQL 服务使配置生效
systemctl restart mysqld
四、测试 MySQL 连接
4.1 本地连接测试
# 登录 MySQL
mysql -u root -p
# 查看数据库列表(能正常显示则说明本地连接正常)
show databases;
4.2 远程连接测试
在远程主机上,通过 MySQL 客户端或可视化工具(如 Navicat、DataGrip)连接,输入以下信息:
- 主机地址:CentOS7 服务器的公网/内网 IP
- 端口:3306
- 用户名:root
- 密码:自定义的 MySQL 密码
若能成功连接并操作数据库,则说明远程访问配置正常。
五、常见问题解决
5.1 无法获取初始密码
问题原因:日志文件中无初始密码记录,可能是 MySQL 服务未正常启动。
解决方案:
# 1. 查看 MySQL 启动日志,排查启动失败原因
cat /var/log/mysqld.log
# 2. 若提示权限问题,修复 /var/lib/mysql 目录权限
chown -R mysql:mysql /var/lib/mysql/
# 3. 重启 MySQL 服务
systemctl restart mysqld
# 4. 重新获取初始密码
grep 'temporary password' /var/log/mysqld.log
5.2 远程连接失败
问题原因:可能是防火墙未开放 3306 端口、远程访问权限未配置正确,或服务器安全组限制。
解决方案:
- 验证防火墙 3306 端口是否开放(参考 3.4 节命令);
- 重新检查远程访问授权配置(确保授权语句中的主机为 % 或指定的远程 IP);
- 若为云服务器,需在云服务商的安全组中开放 3306 端口。
5.3 密码修改失败(提示密码复杂度不够)
问题原因:MySQL 5.7 默认开启密码复杂度校验(validate_password 插件)。
解决方案:
# 1. 登录 MySQL 后,查看密码复杂度配置
show variables like 'validate_password%';
# 2. 若需降低复杂度要求(仅测试环境使用,生产环境不建议),可修改配置
set global validate_password_length=6;
set global validate_password_policy=LOW;
# 3. 重新修改简单密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;

浙公网安备 33010602011771号