使用 docker 安装多版本的 MySQL
首先从 docker 官网下载安装 docker。
检查 docker 安装是否成功,出现类似下面的信息就是安装好了
$ docker version
Client: Docker Engine - Community
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:47:43 2018
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:55:00 2018
OS/Arch: linux/amd64
Experimental: true
从 docker hub 上找到 MySQL 的镜像,查询得到 MySQL 的版本主要有 5.6 5.7 和 8.0。
下面我们分别拉取镜像进行启动
docker pull mysql:5.6
docker pull mysql:5.7
docker pull mysql:8.0
mysql 是官方的镜像,冒号后面跟的是版本号。为了方便,我们把三个 mysql 的容器分别叫做 mysql56, mysql57, mysql80
docker run -p 3316:3306 --name mysql56 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
docker run -p 3317:3306 --name mysql57 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -p 3318:3306 --name mysql80 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
-p 3316:3306 是把容器的3306端口映射到本机的3316端口
–name 是给运行的容器一个别名
-e MYSQL_ROOT_PASSWORD=123456 是初始化 MySQL 的密码
这样的话我们连接 MySQL 的命令就是下面的
mysql --port 3316 -uroot -h127.0.0.1 -p123456
mysql --port 3317 -uroot -h127.0.0.1 -p123456
mysql --port 3318 -uroot -h127.0.0.1 -p123456
但是这样可能不太行。
因为直接从外面连 MySQL 可能是没有权限的
我们先进入容器
docker exec -it mysql80 bash
这样就相当于进入了容器中的 bash
mysql -uroot -p123456
进入 MySQL
update mysql.user set host="%" where user="root";
flush privileges;
这样就可以了。
一般情况下 MySQL5.6 和 MySQL5.7 应该是没问题了,但是 MySQL8.0 的密码验证方式变了,我们应该要改一下
update mysql.user set host="%" where user="root";
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
这样就大功告成
$ mysql --port 3318 -uroot -h127.0.0.1 -p123456
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 49
Server version: 8.0.13 MySQL Community Server - GPL
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.13 |
+-----------+
1 row in set (0.01 sec)
最后我们看一下 docker 其他常用的命令
| 命令 | 功能 |
|---|---|
| docker ps | 查看正在运行的容器 |
| docker ps -a | 查看所有的容器 |
| docker stop mysql56 | 停止 mysql56 这个容器 |
| docker start mysql56 | 启动 mysql56 这个容器 |
| docker images | 查看 docker 所有镜像 |
| docker image list | 同上 |
| docker rm mysql56 | 删除 mysql56 这个容器 |
| docker rmi mysql:5.6 | 删除 mysql 5.6 版本的 image |
原文链接
https://notes.0xl2oot.cn/docker/2018/11/21/docker-mysql.html
使用 docker 安装多版本的 MySQL的更多相关文章
- mysql使用yum源安装各个版本的mysql数据库
每次想用yum安装旧版本的mysql时,发现都找不到mysql的yum安装源,在官网只能找到最新版本mysql的yum源.后来才知道,原来最新的mysql的yum源也是包含了旧版本的mysql的yum ...
- Docker安装Mycat并实现mysql读写分离,分库分表
Docker安装Mycat并实现mysql读写分离,分库分表 一.拉取mycat镜像 二.准备挂载的配置文件 2.1 创建文件夹并添加配置文件 2.1.1 server.xml 2.1.2 serve ...
- 如何使用 Yum Repository 安装指定版本的 MySQL
自从从使用 debian 系的 apt-get 转到使用 yum 工具之后一直不是很习惯,也没有去看过很多工具包安装的时候到底影响到了哪些文件等.这次借这次社区版 MySQL 安装来一并梳理一下. 首 ...
- Docker安装指定版本
今天新增一个Docker服务器,Docker安装顺利,启动hello-world测试的时候却出现了问题: $ docker run hello-worldUnable to find image 'h ...
- Docker安装ElasticSearch 版本7.1.1
一.Docker 部署 ElasticSearch 1.从仓库中查找所有ElasticSearch的镜像 [root@iZwz99dhxbd6xwly17tb3bZ app]# docker sear ...
- docker安装启动、配置MySql
1.安装mysql镜像 docker pull mysql/mysql-server 2.docker中启动Mysql容器 docker run --name mysql01 -d -p 3306:3 ...
- docker安装指定版本TAG的镜像
在docker中安装镜像,一般过程是,docker search 软件名称. 本文以tomcat为例,讲解下载指定版本TAG的tomcat. 搜索tomcat镜像 $ sudo docker sear ...
- 安装Percona版本的MySQL主从复制
准备两台虚拟机,按顺序执行1.1节的公共部分 1.1 首先安装 cmake # yum –y install cmake //也需要安装gcc-c++,openssl openssl-deve ...
- CentOS 6.9/7通过yum安装指定版本的MySQL
一.安装CENTOS 6 # wget http://repo.mysql.com/mysql57-community-release-el6.rpm && rpm -ivh mysq ...
随机推荐
- POJ 2248 搜索
剪枝: 1.从后向前枚举 2.迭代加深 然后就0msAC了 //By SiriusRen #include <cstdio> using namespace std; int n,T,s[ ...
- android取高度
Rect rect = new Rect(); getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); int top = r ...
- jqueryValidator自定义校验规则的一种方式(覆盖源码)
1.自定义js文件:jqValid-extend.js 内容: function setDefaultValidate(){ $.extend(true, $.validator, { // 方法 m ...
- PostgreSQL Replication之第六章 监控您的设置(4)
6.4 处理监控工具 还有几个监控工具可以使您的日常生活更轻松. 其中最流行的监控工具是Nagios.它被广泛地使用,也支持各种软件组件. 要使用 Nagios 来监控您的 PostgreSQL 集群 ...
- Java SpringMvc Jar包下载及部署方式_转载
本次来记录一下关于 springmvc jar包的下载以及部署 首先登陆 http://repo.spring.io/release/org/springframework/spring/到里面我 ...
- Xor Sum 2(位运算)
D - Xor Sum 2 Time limit : 2sec / Memory limit : 1024MB Score : 500 points Problem Statement There i ...
- SSD-实现
一.制作voc数据集 1.数据集文件夹 新建一个文件夹,用来存放整个数据集,或者和voc2007一样的名字:VOC2007 然后像voc2007一样,在文件夹里面新建如下文件夹: 2.将训练图片放到J ...
- java源码学习
Collection List ArrayList LinkedList Vector Stack Set HashSet TreeSet Map HashMap TreeMap LinkedHash ...
- clear---清除当前屏幕
clear命令用于清除当前屏幕终端上的任何信息.
- caioj 1412 动态规划3:a+b问题(完全背包方案数)
每个素数就是一个物品,然后就相当于求完全背包方案数 把max改成+就好了. #include<cstdio> #include<vector> #include<cstr ...