MySQL 5.7 虽然已非最新版,但在企业环境中仍被广泛使用。今天在一台运行 Red Hat Enterprise Linux 7.9 的服务器上成功部署了 MySQL 5.7 数据库。为自己留下一份记录,我将整个安装过程整理如下。
🧰 部署环境
| 项目 | 说明 |
|---|---|
| 操作系统 | RHEL 7.9 |
| 内核版本 | 3.10.0-1160.x86_64 |
| 数据库版本 | MySQL 5.7.17 |
| 安装方式 | 二进制 tar 包安装 |
| 安装目录 | /usr/local/mysql |
| 数据目录 | /data/mysql |
📦 准备阶段
下载 MySQL 安装包
浏览器打开 MySQL 官网下载页,选择对应系统的 tar.gz 包,例如:

可以选择直接点击 Download 按钮下载 tar.gz 包并上传至服务器的 /usr/local/ 目录,或者右键 Download 按钮复制下载链接,并通过如下命令直接下载至服务器:
1 | cd /usr/local/ |
⚠️ 提示: 若提示无
wget命令,请先执行yum -y install wget进行安装。
检查并卸载系统自带的 MariaDB 及MySQL
为了避免影响顺利安装,需要通过如下命令检测系统是否自带安装 MariaDB 及MySQL:
1 | rpm -qa | grep mariadb |
如果以上任一条有结果输出,例如“mysql-libs-5.1.52-1.el6_0.1.x86_64”或“mariadb-libs-5.5.56-2.el7.x86_64”,先卸载干净:
1 | rpm -e mysql-libs-5.1.52-1.el6_0.1.x86_64 # 普通删除 |
⚠️ 提示: 若普通删除提示有依赖的其它文件,请执行强力删除命令。
🔧 安装配置过程
解压并重命名目录
这里使用的 tar.gz 包所以加 -xzvf 选项,如果是 tar 包则使用 -xvf。
1 | tar -xzvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz |
⚠️ 提示: 重命名后的
/usr/local/mysql目录即 🧰 部署环境 中的安装目录。
添加 mysql 用户和组
我们必须创建 mysql 用户,因为 mysql 的初始化需要。
1 | groupadd mysql |
创建数据存储目录并赋权
通常都会将数据存放目录外置到别的目录,这样升级 MySQL 不会影响历史数据。
1 | mkdir -p /data/mysql |
⚠️ 提示: 此处创建的
/data/mysql目录即 🧰 部署环境 中的数据目录。
编写配置文件 /etc/my.cnf
MySQL 的配置文件名为 my.cnf,我们会在这份配置文件中指定端口,数据存放目录,以及编码格式。输入如下命令进行编辑:
1 | vi /etc/my.cnf |
如果已有该文件,可能打开就会显示原文件内容,建议将原文件备份,然后再改为如下内容:
1 | [mysqld] |
执行 MySQL 命令前的准备
MySQL 的可执行文件位于 /usr/local/mysql/bin/ 下,至此每次执行相关命令都需先进入此目录再执行,为了能像其他命令那样在任意位置都可直接执行,你需要输入如下命令:
1 | ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql |
这样就无需每次进入 bin 目录,也能直接用 mysql 命令访问数据库。
🚀 初始化与启动服务
初始化数据库
输入如下命令以执行初始化:
1 | # 指定配置文件、用户、安装目录、数据目录 |
系统会随机生成 root 的临时密码,记录在 /data/mysql/mysql.err 的最后几行:
1 | cat /data/mysql/mysql.err |
启动服务并设置开机自启
在 MySQL 安装目录下提供有启动文件,需手动复制到 /etc/init.d/ 目录内:
1 | cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql |
以服务方式启动 MySQL 并设置开机自启:
1 | service mysql start # 启动服务 |
🔐 配置密码与远程访问
登录并修改 root 密码
使用 root 账户登录:
1 | mysql -u root -p # 使用刚刚记录的临时密码登录 |
执行如下两条 SQL 语句之一,在 [新的密码] 处填写要修改的密码:
1 | SET PASSWORD = PASSWORD('[新的密码]'); -- 或: |
依次执行如下 SQL 语句,设置密码不会过期,并立即保存应用设置:
1 | ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; |
开启 root 远程访问权限
依旧是在 root 账户登录状态下,执行如下 SQL 语句:
1 | USE mysql; -- 切换到mysql数据库 |
🌐 此操作的详细内容可以参考此文章:MySQL 允许远程连接
开放 3306 端口,或关闭防火墙测试远程连接:
1 | # 查看防火墙的状态 |