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 系统上。

相关推荐
柏木乃一11 分钟前
库的制作与原理(2)ELF格式,程序地址空间part2,程序加载
linux·服务器·c++·进程·elf··进程地址空间
杜子不疼.17 分钟前
【Linux】基础IO(三):文件描述符与重定向
linux·c语言·开发语言·人工智能
猫猫的小茶馆2 小时前
【Linux 驱动开发】七. 中断下半部
linux·arm开发·驱动开发·stm32·嵌入式硬件·mcu
cyber_两只龙宝2 小时前
LVS-DR模式实验配置及原理详解
linux·网络·云原生·智能路由器·lvs·dr模式
好好学习啊天天向上7 小时前
C盘容量不够,python , pip,安装包的位置
linux·python·pip
a努力。7 小时前
国家电网Java面试被问:混沌工程在分布式系统中的应用
java·开发语言·数据库·git·mysql·面试·职场和发展
li_wen018 小时前
文件系统(八):Linux JFFS2文件系统工作原理、优势与局限
大数据·linux·数据库·文件系统·jffs2
wypywyp8 小时前
2.虚拟机一直显示黑屏,无法打开,可能是分配的硬盘空间不够
linux·运维·服务器
SongYuLong的博客8 小时前
TL-WR710N-V2.1 硬改刷机OpenWRT源码编译固件
linux·物联网·网络协议
AlfredZhao8 小时前
Docker 快速入门:手把手教你打包 Python 应用
linux·docker·podman