使用Docker安装MySQL5和MySQL8并同时运行

发布时间:2024年01月04日

大家好,我是邵奈一,一个不务正业的程序猿、正儿八经的斜杠青年。
1、世人称我为:被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员…
2、这几年,我整理了很多IT技术相关的教程给大家,爱生活、爱分享。
3、如果您觉得文章有用,请收藏,转发,评论,并关注我,谢谢!
博客导航跳转(请收藏):邵奈一的技术博客导航
| 公众号 | 微信 | CSDN | 掘金 | 51CTO | 简书 | 微博 |


0x00 教程内容

本教程主要是记录使用Docker安装MySQL8和MySQL5,亲测有效。

0x01 背景说明

  1. 有些时候,因为项目测试原因,需要在自己电脑里安装MySQL8跟MySQL5两个版本,并且需要同时运行,并且使用起来很方便。如果直接往电脑里装,感觉比较乱,所以就想着直接在Docker中安装。
  2. 我的电脑是ARM芯片,需要先安装好Docker。

0x02 使用Docker安装MySQL

1. 安装MySQL8

拉取mysql8.0镜像:

docker pull mysql:8.0

新建好挂载的地址:

mkdir -p /Users/shaonaiyi/app/docker/data/Mysql/Mysql8/{conf,data,log,mysql-files}

直接run一下,并且加上需要挂载的地址参数:

docker run  --restart=always  --name mysql8.0 \
-v /Users/shaonaiyi/app/docker/data/Mysql/Mysql8/conf:/etc/mysql/conf.d \
-v /Users/shaonaiyi/app/docker/data/Mysql/Mysql8/data:/var/lib/mysql \
-v /Users/shaonaiyi/app/docker/data/Mysql/Mysql8/log:/var/log \
-v /Users/shaonaiyi/app/docker/data/Mysql/Mysql8/mysql-files:/var/lib/mysql-files \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD='123456' \
-d mysql:8.0

说明:端口是3306,密码是123456。

执行命令如下:

docker exec -it mysql8.0 mysql -uroot -p123456
2. 安装MySQL5

步骤与前面类似:

docker pull biarms/mysql:5.7.30-linux-arm64v8

注意:需要拉一个ARM版本的镜像,如果拉X86版本的,直接拉即可。

新建好挂载的地址(与前面步骤只差5和8的数字):

mkdir -p /Users/shaonaiyi/app/docker/data/Mysql/Mysql5/{conf,data,log,mysql-files}

新建my.cnf文件:

vim /Users/shaonaiyi/app/docker/data/Mysql/Mysql5/conf/my.cnf

文件内容为:

[mysql]
default-character-set=utf8
socket=/var/lib/mysql/mysql.sock
[mysqld]
#mysql5.7以后的不兼容问题处理
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
max_connections=200
#character-set-server=utf8
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
default-time_zone='+8:00'
[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/var/run/mysql/mysql.pid
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

直接run一下,并且加上需要挂载的地址参数:

docker run  --restart=always  --name mysql5.7 \
-v /Users/shaonaiyi/app/docker/data/Mysql/Mysql5/conf:/etc/mysql/conf.d \
-v /Users/shaonaiyi/app/docker/data/Mysql/Mysql5/data:/var/lib/mysql \
-v /Users/shaonaiyi/app/docker/data/Mysql/Mysql5/log:/var/log \
-v /Users/shaonaiyi/app/docker/data/Mysql/Mysql5/mysql-files:/var/lib/mysql-files \
-p 3307:3306 \
-e MYSQL_ROOT_PASSWORD='123456' \
-d biarms/mysql:5.7.30-linux-arm64v8  \
--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

说明:端口是3307(不能再使用3306,因为MySQL8已经占用),密码是123456。

执行命令如下:

docker exec -it mysql5.7 mysql -uroot -p123456

0xFF 总结

  1. 本教材非常有用,如果不是ARM架构,直接改一下镜像就可以了,非常简单。
  2. 其实不这么麻烦也可以,就是直接装,然后切换服务,但是有点麻烦了,所以干脆直接通过不同端口,连接不同版本的数据库,这样就可以一劳永逸了。还有其他办法吗?!一起分享一下啊!

邵奈一 原创不易,如转载请标明出处,教育是一生的事业。


文章来源:https://blog.csdn.net/shaock2018/article/details/135068494
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。