大家好,我是邵奈一,一个不务正业的程序猿、正儿八经的斜杠青年。
1、世人称我为:被代码耽误的诗人、没天赋的书法家、五音不全的歌手、专业跑龙套演员、不合格的运动员…
2、这几年,我整理了很多IT技术相关的教程给大家,爱生活、爱分享。
3、如果您觉得文章有用,请收藏,转发,评论,并关注我,谢谢!
博客导航跳转(请收藏):邵奈一的技术博客导航
| 公众号 | 微信 | CSDN | 掘金 | 51CTO | 简书 | 微博 |
0x00 教程内容
本教程主要是记录使用Docker安装MySQL8和MySQL5,亲测有效。
0x01 背景说明
- 有些时候,因为项目测试原因,需要在自己电脑里安装MySQL8跟MySQL5两个版本,并且需要同时运行,并且使用起来很方便。如果直接往电脑里装,感觉比较乱,所以就想着直接在Docker中安装。
- 我的电脑是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 总结
- 本教材非常有用,如果不是ARM架构,直接改一下镜像就可以了,非常简单。
- 其实不这么麻烦也可以,就是直接装,然后切换服务,但是有点麻烦了,所以干脆直接通过不同端口,连接不同版本的数据库,这样就可以一劳永逸了。还有其他办法吗?!一起分享一下啊!
邵奈一 原创不易,如转载请标明出处,教育是一生的事业。