在早先21年左右的时候mysql官网就不提供全部的mysql5.x安装包了,有一些特殊的场景还是要5.x的mysql,例如ranger等,因此如果官网上下载不到你需要的,可以去国内的镜像中下载。本文由于用的是CentOS7,能用的包官网上只提供了glibc依赖,但是最高只有2.5的,所以从阿里镜像上下载不依赖glibc的
官网:https://downloads.mysql.com/archives/community/
阿里云镜像地址:https://mirrors.aliyun.com/mysql/MySQL-5.7/
下载包:mysql-5.7.36-el7-x86_64.tar.gz
下载的包中应当只有mysql本体自身,和8.x的无缝接入不一样,TAR全包中没有router工具,5.x的需要负载均衡那些需要自己额外搭建
第一步:检查安装环境
1、运行如下命令,查看是否有自带的mysql
#按需停止
service mysql stop
rpm -qa | grep mysql
如果有使用如下命令删除它,后面的–nodeps是强制删除的意思
rpm –e 自带的mysqlrpm包 --nodeps
2、查找mysql遗留文件
find / -name mysql
删除查找出的mysql目录,可能类似如下的文件,具体找到什么不一定,总之我们需要删除找到的所有文件,如果不删除,那么有可能安装mysql的时候会发生不生成密码等重要数据的问题
/var/lib/mysql
/usr/lib/mysql
/usr/lib64/mysql
/usr/include/mysql
同时要注意:卸载后mysql的/etc/my.cnf文件不会删除,需要进行手工删除
rm -rf /etc/my.cnf
3、运行如下命令,安装或更新已有的环境
yum -y install autoconf libaio perl numactl
删除当前mysql-libs包
yum remove mysql-libs
如果你不删除它,那么很有可能在安装的时候和你安装的版本冲突,而导致安装mysql的时候,日志输出一堆准备的install然后就结束了,就是不进安装阶段
第二步:将安装包解压
tar -zxf mysql-5.7.36-el7-x86_64.tar.gz -C /opt
cd /opt
mv mysql-5.7.36-el7-x86_64 mysql57
第三步:准备运行环境
创建数据存储路径
cd /opt/mysql57
mkdir data
虽然mysql没有像Oracle那样强制非root启动,但正式环境一般会准备一个mysql用户来后期操作,自己用可以不配置
# 创建用户组和用户
groupadd mysql
useradd -r -g mysql mysql
chown mysql:mysql -R /opt/mysql57
新建/etc/my.cnf文件
vi /etc/my.cnf
# 添加以下内容
[mysqld]
#数据库监听的地址
bind-address = 0.0.0.0
#端口
port = 3306
#操作数据库的用户
user = root
#你mysql的本体放在哪里了
basedir = /opt/mysql57
#存储数据的路径
datadir = /opt/mysql57/data
#mysql通讯文件存放位置
socket = /opt/mysql57/data/mysql.sock
#日志
log-error = /opt/mysql57/data/mysql.err
#进程文件
pid-file = /opt/mysql57/data/mysql.pid
#字符集
character_set_server = utf8
collation-server = utf8_general_ci
symbolic-links = 0
explicit_defaults_for_timestamp = true
#关闭严格模式,这个模式对一些场景有影响
sql_mode=NO_ENGINE_SUBSTITUTION
#允许最大连接数
max_connections=10000
#允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
# 支持的监听地址
bind-address=0.0.0.0
[client]
#设置mysql客户端连接服务端时默认使用的端口和会话文件
port=3306
socket=/opt/mysql57/data/mysql.sock
第四步:执行初始化命令
cd /opt/mysql57/bin
./mysqld --defaults-file=/etc/my.cnf --basedir=/opt/mysql57 --datadir=/opt/mysql57/data --user=root --initialize
命令不报错的前提下,进入数据目录,查看里面的有资源
[root@node2 mysql57]# cd data/
[root@node2 data]# ll
total 110664
-rw-r-----. 1 root root 56 Jun 19 17:03 auto.cnf
-rw-------. 1 root root 1680 Jun 19 17:03 ca-key.pem
-rw-r--r--. 1 root root 1112 Jun 19 17:03 ca.pem
-rw-r--r--. 1 root root 1112 Jun 19 17:03 client-cert.pem
-rw-------. 1 root root 1676 Jun 19 17:03 client-key.pem
-rw-r-----. 1 root root 436 Jun 19 17:03 ib_buffer_pool
-rw-r-----. 1 root root 12582912 Jun 19 17:03 ibdata1
-rw-r-----. 1 root root 50331648 Jun 19 17:03 ib_logfile0
-rw-r-----. 1 root root 50331648 Jun 19 17:03 ib_logfile1
drwxr-x---. 2 root root 4096 Jun 19 17:03 mysql
-rw-r-----. 1 root root 1002 Jun 19 17:03 mysql.err
drwxr-x---. 2 root root 8192 Jun 19 17:03 performance_schema
-rw-------. 1 root root 1676 Jun 19 17:03 private_key.pem
-rw-r--r--. 1 root root 452 Jun 19 17:03 public_key.pem
-rw-r--r--. 1 root root 1112 Jun 19 17:03 server-cert.pem
-rw-------. 1 root root 1680 Jun 19 17:03 server-key.pem
drwxr-x---. 2 root root 8192 Jun 19 17:03 sys
此时初始的默认密码在mysql.err文件中的最后一行
[root@node2 data]# cat mysql.err
2025-06-19T09:03:39.887224Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2025-06-19T09:03:40.402774Z 0 [Warning] InnoDB: New log files created, LSN=45790
2025-06-19T09:03:40.471464Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2025-06-19T09:03:40.533215Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 4b271a54-4cec-11f0-bf1d-000c29e980e8.
2025-06-19T09:03:40.534735Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2025-06-19T09:03:40.741949Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2025-06-19T09:03:40.741962Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2025-06-19T09:03:40.742683Z 0 [Warning] CA certificate ca.pem is self signed.
2025-06-19T09:03:40.767753Z 1 [Note] A temporary password is generated for root@localhost: mloDcfuKR3&L
第五步:启动
将mysql本体中的启动脚本拷贝到linux系统的系统文件夹下面
cp /opt/mysql57/support-files/mysql.server /etc/init.d/mysql
随后就可以使得linux识别mysql的服务启动命令
[root@node2 data]# service mysql start
Warning: mysql.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Starting MySQL. SUCCESS!
让mysql随机器启动
chkconfig mysql on
#后面关闭随机启动用off
chkconfig mysql off
第六步:配置环境变量,并按需使用mysql
vi /etc/profile
追加:
export PATH=$PATH:/opt/mysql57/bin
source /etc/profile
使用初始密码登录mysql,并修改密码,注意!!!第一次连接不要显示的直接-p携带初始密码
直接执行:
mysql -uroot -p
随后在跳出的密码输入界面输入初始密码即可
修改初始密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
更改连接域
use mysql;
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;
顺带提一点,由于 CentOS 7 已经很老了,如果原地升级到其他发行版,要对mysql做一个兼容。尤其是CentOS 7中有一个叫做 systemd-sysv-generator 的后台工具。它会自动扫描 /etc/init.d/ 目录下的脚本,并为它们临时生成一个systemd服务单元,当你执行 systemctl start mysql 时,systemd 没有找到 mysql.service 文件,systemd 向兼容层查询,发现 /etc/init.d/mysql 存在,systemd 会调用 systemd-sysv-generator 将那个古老的SysV脚本包装成一个临时的systemd服务。但在其他新的发行版中需要自己写 service 文件,并安装向下兼容软件
[Unit]
Description=MySQL Server
After=network-online.target
Wants=network-online.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
# Type=forking 表示这是一个会自己转入后台运行的程序
Type=forking
# 关键: 修改为你的 mysql.server 脚本的路径
ExecStart=/opt/mysql57/support-files/mysql.server start
ExecStop=/opt/mysql57/support-files/mysql.server stop
ExecReload=/opt/mysql57/support-files/mysql.server reload
# 关键: 修改为你的 PID 文件位置,通常在数据目录下
PIDFile=/opt/mysql57/data/mysqld.pid
Restart=on-failure
RestartPreventExitStatus=1
PrivateTmp=false
本文详细介绍了在Linux环境中安装MySQL 5.6.21 RPM包的步骤,包括检查环境、卸载旧版本、安装依赖、安装服务器和客户端、设置初始密码、启动服务、修改权限以及配置远程连接。此外,还涉及了开机自启和检查系统配置等关键操作。

1982

被折叠的 条评论
为什么被折叠?



