CentOS 7 安装 MySQL 5.7

CentOS 7 安装 MySQL 5.7

在 CentOS 7 系统上通过 tar.gz 压缩包安装 MySQL 5.7,可遵循以下简洁且正确的步骤。本文以 mysql-5.7.44 版本为例进行演示。

一、准备工作

1. 软件版本

  • 操作系统 : CentOS 7.9 (本文基于 CentOS-7-x86_64-Minimal-2009.iso)
  • MySQL 版本 : MySQL 5.7 (本文以 mysql-5.7.44 版本为例进行安装示范)

2. 获取 MySQL 安装包

首先,需要将下载的 MySQL 安装包(例如 mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz)放到 CentOS 服务器上。

  1. 在本地电脑上,访问 MySQL 官方归档网站下载所需的版本:
  2. 在页面上,请按以下步骤选择正确的版本:
    • Product Version : 5.7.44 (或所需的其他 5.7 版本)
    • Operating System : Linux - Generic
    • OS Version : Linux - Generic (glibc 2.12) (x86, 64-bit)
  3. 在筛选出的列表中,找到名为 mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz 的文件并下载。
  4. 下载完成后,使用文件传输工具(如 Xftp 或 scp)将安装包上传到服务器的任意目录(例如 /root)。

3. 检查并卸载旧版本

首先,检查系统是否已安装 MariaDB 或其他版本的 MySQL,如果存在,请将其卸载以避免冲突。

bash 复制代码
# 检查 MariaDB
rpm -qa | grep mariadb

# 如果存在,则卸载
rpm -e --nodeps `rpm -qa | grep mariadb`

# 检查旧版 MySQL
rpm -qa | grep mysql

# 如果存在,则卸载
rpm -e --nodeps `rpm -qa | grep mysql`

4. 检查并安装依赖库

MySQL 5.7 需要 libaionumactl 库。可先用以下命令检查它们是否已安装:

bash 复制代码
# 检查 libaio 是否安装
rpm -qa | grep libaio

# 检查 numactl 是否安装
rpm -qa | grep numactl

如果对应的命令没有任何输出,则表示该库尚未安装。执行以下命令来安装它们:

bash 复制代码
yum -y install libaio numactl

5. 创建 MySQL 用户和组

出于安全考虑,需要创建一个专门的用户和组来运行 MySQL 服务。

bash 复制代码
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

二、安装与初始化

1. 解压 tar.gz 文件

假设安装包 mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz 已上传到服务器的 /root 目录下。

bash 复制代码
cd /root
tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz

2. 移动并重命名目录

为了方便管理,将解压后的目录移动到 /usr/local 并重命名为 mysql

bash 复制代码
mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql

3. 创建数据目录并授权

在 MySQL 安装目录下创建用于存放数据的 data 目录,并将整个 MySQL 目录的所有权赋予之前创建的 mysql 用户和组。

bash 复制代码
mkdir -p /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql/

4. 编辑配置文件

创建并编辑 MySQL 的主配置文件 /etc/my.cnf

bash 复制代码
vi /etc/my.cnf

将以下基础配置内容粘贴进去:

ini 复制代码
[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock

[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
character-set-server=utf8
socket=/var/lib/mysql/mysql.sock
pid-file=/usr/local/mysql/data/mysql.pid
log-error=/var/log/mysqld.log

5. 创建并授权相关目录和文件

根据 my.cnf 的配置,需要确保 mysql 用户有权访问 socket 目录和日志文件。

bash 复制代码
# 创建并授权 socket 目录
mkdir -p /var/lib/mysql
chown -R mysql:mysql /var/lib/mysql

# 创建并授权日志文件
touch /var/log/mysqld.log
chown mysql:mysql /var/log/mysqld.log

6. 初始化数据库

进入 MySQL 的 bin 目录执行初始化命令。 请务必记下初始化过程中生成的临时密码

bash 复制代码
cd /usr/local/mysql/bin/

./mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

初始化完成后,查看日志文件获取临时密码:

bash 复制代码
grep 'temporary password' /var/log/mysqld.log

三、启动与安全设置

1. 设置服务并启动

将 MySQL 的服务脚本复制到系统服务目录,并设置为开机自启。

bash 复制代码
# 复制服务脚本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

# 添加到服务列表
chkconfig --add mysqld

# 设置开机自启
chkconfig mysqld on

# 启动 MySQL 服务
service mysqld start

2. 检查服务状态

可使用以下命令来确认服务的自启设置和当前运行状态。

bash 复制代码
# 检查是否已设置开机自启
chkconfig --list mysqld

# 检查当前服务运行状态
service mysqld status

如果 chkconfig 命令的输出类似 mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off,表示常用的运行级别(2, 3, 4, 5)已设为开机自启。同时,如果 service 命令显示服务为 SUCCESS! MySQL running,则表示服务当前正在运行。

3. 创建命令软链接

为了方便在任何路径下都能使用 mysql 命令,需要创建一个软链接。

bash 复制代码
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

4. 登录并修改密码

使用之前获取的临时密码登录 MySQL。

bash 复制代码
mysql -u root -p

进入 MySQL 后,立即修改 root 用户的密码。

sql 复制代码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword';

YourNewStrongPassword 替换为新密码。

5. 运行安全脚本 (可选但推荐)

为了提高安全性,可以运行 mysql_secure_installation 脚本。

bash 复制代码
/usr/local/mysql/bin/mysql_secure_installation

根据提示进行操作,包括设置密码策略、移除匿名用户、禁止 root 远程登录等。

至此,mysql-5.7.44 已成功安装并运行在 CentOS 7 系统上。

相关推荐
天才奇男子16 小时前
HAProxy高级功能全解析
linux·运维·服务器·微服务·云原生
学嵌入式的小杨同学16 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
酥暮沐17 小时前
iscsi部署网络存储
linux·网络·存储·iscsi
❀͜͡傀儡师17 小时前
centos 7部署dns服务器
linux·服务器·centos·dns
Dying.Light17 小时前
Linux部署问题
linux·运维·服务器
S190117 小时前
Linux的常用指令
linux·运维·服务器
小义_17 小时前
【RH134知识点问答题】第7章 管理基本存储
linux·运维·服务器
梁洪飞18 小时前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
_运维那些事儿18 小时前
VM环境的CI/CD
linux·运维·网络·阿里云·ci/cd·docker·云计算
·云扬·19 小时前
MySQL Binlog落盘机制深度解析:性能与安全性的平衡艺术
android·mysql·adb