用压缩包方式在Ubuntu 20、21上手动安装 Mysql 5.7.34,共存MySQL8.0、Maridb

      Ubuntu 18 以后的 Ubuntu Linux 版本不再默认支持 Mysql 5.x ,偏偏一些应用要求必须 使用  Mysql 5.x 。虽然网上早就有无数文章指导用 .deb 包方式切换安装成 Mysql 5.7 ,但是需要 安装一大堆 依赖包,必然导致系统臃肿 和 “不清爽” ,并且 共存Mysql5.7、MySQL8.0、Maridb 是一个很大的麻烦。因此研究了一下,成功用 .tar.gz 压缩包方式(官方编译好的二进制程序),清爽的安装到 Ubuntu 20.4 中,与原有的其它类型、其它版本数据库系统毫不冲突,各干各的。     

1、压缩包官方下载地址(官方编译好的二进制程序):

https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz

执行命令行:

wget  https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz

下面全部动作在 root 权限下执行

2、解压在某个安装目录,例如 : /opt

tar xzf  mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz -C  /opt/

得到目录:

/opt/mysql-5.7.34-linux-glibc2.12-x86_64

3、链接到 /usr/local/ 目录下,修改权限

ln  -s  /opt/mysql-5.7.34-linux-glibc2.12-x86_64  /usr/local/mysql57
cd  /usr/local/mysql57
chown mysql:mysql . -R

4、创建数据库文件存放的目录:

mdir  /var/lib/mysql57-data
chown mysql:mysql   /var/lib/mysql57-data -R
  # 授权拥有者为 mysql

5、创建 my.cnf 文件,在  /usr/local/mysql57 目录下。

文件内容如下:

# This is Mysql 5.7 configure file , Installed to /usr/local/mysql57
# /usr/local/mysql57/my.cnf

[mysqld]

user  = mysql

# 这里需要与本机原有的 Mysql8、MariaDB 错开
pid-file = /var/run/mysqld/mysqld57.pid

# 这里需要与本机原有的 Mysql8、MariaDB 错开
socket  = /var/run/mysqld/mysqld57.sock

# 端口号需要与本机的其它数据库 系统错开
port  = 3308

# bind-address = 0.0.0.0

basedir  = /usr/local/mysql57

# 这是自建的 数据库文件存放目录
datadir  = /var/lib/mysql57-data

tmpdir  = /tmp

# 这是 Mysql 5.7 专用的共享库
lc-messages-dir = /usr/local/mysql57/share

# skip-external-locking
# skip-grant-tables
character-set-server  = utf8mb4
collation-server      = utf8mb4_general_ci
query_cache_size = 16M
log_error = /var/log/mysql/mysql57_error.log

[client]
# Default is Latin1, if you need UTF-8 set this (also in server section)
default-character-set = utf8mb4
# socket location

# 这里必须与上面服务器端 socket = 相同
socket = /var/run/mysqld/mysqld57.sock

6、初始化数据库

ln -s  /usr/local/mysql57/my.cnf  /etc/mysql/mysql57.cnf
/usr/local/mysql57/bin/mysqld --defaults-file= /etc/mysql/mysql57.cnf  --initialize --console

查看文件  /var/log/mysql/mysql57_error.log ,找到以下文字,其中最后一串字符是 数据库管理员 root 临时密码 :   

2021-08-14T05:36:45.092790Z 1 [Note] A temporary password is generated for root@localhost: DwDyJQ*7pwx+   <----这是临时密码

记录下这个临时密码,待会要用到。

7、创建 mysql 命令行客户端的 mysql 5.7 专版

新建、编辑文件 mysql57 放在 /usr/local/mysql57/bin/ 下

创建文件  /usr/local/mysql57/bin/mysql57

文件内容:

# 脚本文件: /usr/local/mysql57/bin/mysql57

/usr/local/mysql57/bin/mysql --defaults-file=/usr/local/mysql57/my.cnf $1 $2 $3 $4$5 $6 $7 $8 $9 $10


    保存,   授权执行和链接:
    chmod a+x  /usr/local/mysql57/bin/mysql57 
     ln -s   /usr/local/mysql57/bin/mysql57   /usr/bin/mysql57

至此 得到 mysql 5.7 专用的命令行客户端 mysql57 命令

8、运行数据库服务器,修改 root 密码 :

开另一个新终端窗口用 (或者用 tmux 终端壳工具 ),用 root 权限运行:
         /usr/local/mysql57/bin/mysqld --defaults-file= /etc/mysql/mysql57.cnf  &

回到刚才的终端窗口,执行修改数据库 root 密码:

mysql57 -u root  -p

输入刚才记下的临时密码,进入数据库
查看 数据库列表: show databases;
如果屏幕打印出数据库列表,证明正常工作了。
修改root 密码:
 ALTER USER  ‘root‘@‘localhost‘  IDENTIFIED BY  ‘新的密码’;
FLUSH PRIVILEGES;    # 刷新及重新加载权限

9、配置开机启动 第一步

创建文件:/usr/lib/systemd/system/mysql57.service   , 编写内容如下 (记得保存):

# 文件 /usr/lib/systemd/system/mysql57.service 的内容

[Unit]
Description=MySQL5.7.34 database server
Documentation=man:mysqld(8)
Documentation=https://downloads.mysql.com/archives/community/
After=network.target

[Install]
WantedBy=multi-user.target
Alias=mysql57.service
# Alias=mysqld.service

[Service]
PrivateNetwork=false
User=mysql
Group=mysql
Type=forking
ExecStart=/usr/local/mysql57/bin/mysql57-server.sh
TimeoutSec=5
RemainAfterExit=yes
GuessMainPID=no
ExecStop=/usr/bin/killall /usr/local/mysql57/bin/mysqld

10、创建文件 /usr/local/mysql57/bin/mysql57-server.sh ,编写 内容如下:

#!/usr/bin/sh

#  文件 /usr/local/mysql57/bin/mysql57-server.sh 的内容

if [ ! -e /var/run/mysqld/mysqld57.sock  -o  ! -e /var/run/mysqld/mysqld57.pid ]
     then
             /usr/local/mysql57/bin/mysqld  --defaults-file=/usr/local/mysql57/my.cnf &
      else
             echo  MySQL 5.7 is already up and running.....
fi

exit 0

执行命令:

chmod  a+x  /usr/local/mysql57/bin/mysql57-server.sh   # 授权 执行

ln -s  /usr/local/mysql57/bin/mysql57-server.sh  /usr/bin/mysql57-server

killall   /usr/local/mysql57/bin/mysqld   # 杀掉原来已经运行的 mysql5.7 ,便于待会测试“服务”形式

systemctl daemon-reload  #   重载 systemd

systemctl  enable  mysql57    # 设为开机自动启动

systemctl  start  mysql57    #  启动 mysql 5.7 服务

这时 已经运行 Mysql 5.7 数据库服务,证实方法:

ps -ef | grep  mysql57

#  如果出现下面内容,表示已经成功运行

mysql     759309       1 11 17:53 pts/0    00:00:00 /usr/local/mysql57/bin/mysqld --defaults-file=/usr/local/mysql57/my.cnf

11、应用程序使用本数据库的方法有多种:

      a、连接 3308 端口,

      b、本机命令行客户端 mysql57

      c 、使用管道或者套接字:
            pid-file = /var/run/mysqld/mysqld57.pid
            socket  = /var/run/mysqld/mysqld57.sock

总结

      通过以上方法,能让 Mysql 5.7 服务相对独立的运行起来,不需要给系统增加依赖包的负担,避免“污染” Linux 系统的 “纯净”,还可以举一反三的 部署很多个不同的数据库实例。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值