1. 下载MySQL软件包
下载地址:https://dev.mysql.com/downloads/mysql/

查看GLIBC版本,如下图所示

下载对应版本的MySQL软件包

2. 查看MySQL GLIBC安装文档
官方地址:https://dev.mysql.com/doc/refman/8.0/en/binary-installation.html

3. 安装MySQL软件
安装MySQL依赖包:
yum install libaio -y
注:libaio 是 Linux 的异步 I/O (Asynchronous Input/Output) 库,全称是 Linux Asynchronous I/O Library。它的主要作用是允许程序在不阻塞 CPU 的情况下发起 I/O 操作,即 I/O 请求可以异步地进行,程序不需要等待 I/O 操作完成后再进行下一步操作,从而提高了 I/O 性能。在 MySQL 中,libaio 被用于处理磁盘的读写操作,尤其是在高负载和高并发的情况下,可以提高数据库的性能和响应速度。
对MySQL压缩包进行解压缩操作:
tar -xf mysql-8.0.40-linux-glibc2.17-x86_64.tar.xz
ll mysql-8.0.40-linux-glibc2.17-x86_64
-xf:可以解压任何tar类型的压缩包,如.tar.gz或.tar.xz格式压缩包
目录结构说明:

软件安装路径、数据路径以及端口设置:
| 选项 | 值(自定义也可以采用默认形式) |
| 安装路径 | /export/server/mysql |
| 数据路径 | /export/server/mysql/data |
| 端口号 | 3306 |
具体安装步骤:
准备工作,提前卸载与mariadb相关软件包
rpm -qa |grep mariadb
第一步:创建一个数据库专用账号mysql(其所属组也为mysql) => -r系统账号,-s可以使用shell
useradd -r -s /sbin/nologin mysql
id mysql
参数说明:
-r :系统参数-s :shell缩写,用于指定shell解析器,需要登录系统账号,用/bin/bash;不需要登录系统的账号(系统账号),用/sbin/nologin
第二步:清空系统中的原有mariadb的配置文件(/etc/my.cnf)
rm -rf /etc/my.cnf
第三步:把mysql解压后的压缩包(GBLIC版本)移动到/根目录下,然后更名为mysql
mkdir -p /export/server
mv mysql-8.0.40-linux-glibc2.17-x86_64 /export/server/mysql
第四步:切换到mysql工作目录/export/server/mysql
cd /export/server/mysql
第五步:初始化数据库(可以实现数据库的初始化,而且会产生一个随机密码)
bin/mysqld --initialize --user=mysql --basedir=/export/server/mysql &>/tmp/mysqld.log
选项说明:
--initialize 初始化(真正开始干活)
--user=mysql 以mysql用户的身份初始化数据库,产生文件都是mysql作为拥有者
--basedir=xxx mysql其安装目录,非常重要
运行完毕后,观察最后一行,保存root账号的密码,以备后期使用。
A temporary password is generated for root@localhost: synNE*skt4ts
经验之谈:想查看mysql软件有没有初始化成功,主要看mysql目录下有没有产生data文件夹且文件夹中至少要有一个mysql的文件夹。
延伸一下:有一个文件/tmp/mysqld.log,里面保存了数据库密码信息,如何提取出这个密码?
答:grep password /tmp/mysqld.log |awk '{print $NF}'
第六步:设置安全加密连接(SSL),数据传输会采用加密形式,适合敏感数据
bin/mysql_ssl_rsa_setup --datadir=/export/server/mysql/data
第七步:创建mysqld.service
vi /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
After=network.target
[Service]
User=mysql
Group=mysql
Type=forking
# MySQL 执行命令及路径
ExecStart=/export/server/mysql/bin/mysqld --daemonize --pid-file=/export/server/mysql/data/mysqld.pid
ExecStop=/export/server/mysql/bin/mysqladmin --defaults-file=/export/server/mysql/my.cnf shutdown
# Ensure MySQL has sufficient time to start up
TimeoutSec=600
# PID 文件路径
PIDFile=/export/server/mysql/data/mysqld.pid
# Enable these options to auto-restart the service if it crashes
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
服务创建完成后,重新加载 systemd 服务
systemctl daemon-reload
第八步:启动MySQL数据库
systemctl start mysqld
systemctl status mysqld