原文:使用 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的更多相关文章

  1. mysql使用yum源安装各个版本的mysql数据库

    每次想用yum安装旧版本的mysql时,发现都找不到mysql的yum安装源,在官网只能找到最新版本mysql的yum源.后来才知道,原来最新的mysql的yum源也是包含了旧版本的mysql的yum ...

  2. Docker安装Mycat并实现mysql读写分离,分库分表

    Docker安装Mycat并实现mysql读写分离,分库分表 一.拉取mycat镜像 二.准备挂载的配置文件 2.1 创建文件夹并添加配置文件 2.1.1 server.xml 2.1.2 serve ...

  3. 如何使用 Yum Repository 安装指定版本的 MySQL

    自从从使用 debian 系的 apt-get 转到使用 yum 工具之后一直不是很习惯,也没有去看过很多工具包安装的时候到底影响到了哪些文件等.这次借这次社区版 MySQL 安装来一并梳理一下. 首 ...

  4. Docker安装指定版本

    今天新增一个Docker服务器,Docker安装顺利,启动hello-world测试的时候却出现了问题: $ docker run hello-worldUnable to find image 'h ...

  5. Docker安装ElasticSearch 版本7.1.1

    一.Docker 部署 ElasticSearch 1.从仓库中查找所有ElasticSearch的镜像 [root@iZwz99dhxbd6xwly17tb3bZ app]# docker sear ...

  6. docker安装启动、配置MySql

    1.安装mysql镜像 docker pull mysql/mysql-server 2.docker中启动Mysql容器 docker run --name mysql01 -d -p 3306:3 ...

  7. docker安装指定版本TAG的镜像

    在docker中安装镜像,一般过程是,docker search 软件名称. 本文以tomcat为例,讲解下载指定版本TAG的tomcat. 搜索tomcat镜像 $ sudo docker sear ...

  8. 安装Percona版本的MySQL主从复制

    准备两台虚拟机,按顺序执行1.1节的公共部分 1.1 首先安装 cmake # yum –y install cmake     //也需要安装gcc-c++,openssl openssl-deve ...

  9. CentOS 6.9/7通过yum安装指定版本的MySQL

    一.安装CENTOS 6 # wget http://repo.mysql.com/mysql57-community-release-el6.rpm && rpm -ivh mysq ...

随机推荐

  1. Android OpenGL ES(七)----理解纹理与纹理过滤

    1.理解纹理 OpenGL中的纹理能够用来表示图像.照片,甚至由一个数学算法生成的分形数据.每一个二维的纹理都由很多小的纹理元素组成.它们是小块的数据,类似于我们前面讨论过的片段和像素.要使用纹理,最 ...

  2. XXXfragment that is not a fragment错误,fragment认不出来

    要注意的是fragment事实上是有两个版本号的,一个是 import android.support.v4.app.Fragment; 另外一个是 import android.app.Fragme ...

  3. ural 1989(树状数组+多项式hash)

    题意:给出一个字符串.有两种操作,一个是p a b,问字符串从位置a到位置b的子串是否是一个回文子串.还有一个操作 c a b,把字符串位置a的字符替换为b. 题解:由于字符串长度为1e5且问的次数也 ...

  4. nj08---process、console

    概念:所有属性都可以在程序的任何地方访问,即全局变量.在JavaScript中,通常window是全局对象,而Node.js的全局对象是global,所有全局变量都是global对象的属性,如:con ...

  5. bzoj1002: [FJOI2007]轮状病毒(基尔霍夫矩阵)

    1002: [FJOI2007]轮状病毒 题目:传送门 题解: 决定开始板刷的第一题... 看到这题的时候想:这不就是求有多少种最小生成树的方式吗? 不会啊!!!%题解... 什么鬼?基尔霍夫矩阵?? ...

  6. 范型在java中的应用

    根据泛型在java中的不同位置,大致可以分为类泛型.方法泛型和接口泛型.以下三个Demo基本展现三种泛型的用法,其中接口泛型又分两种情况描述.类泛型和方法泛型 import java.util.Arr ...

  7. 请问这个git上开源的node项目怎样才能在windows用Npm跑起来

    这个项目https://github.com/wechaty/we...以前都是用人家弄好的手脚架搞得es6,搞了2天搞起了es6还报错,错误信息在下面,然后我想请教大神:1我到底应该怎么弄才能在wi ...

  8. UVa 10305 Ordering Tasks【拓扑排序】

    题意:给出n件事情,m个二元组关系,求它们的拓扑序列 用的队列来做 #include<iostream> #include<cstdio> #include<cstrin ...

  9. Xrdp - 通过Windows的RDP连接Linux远程桌面(Ubuntu/CentOS/Redhat 7)(转载)

            您多久访问一次Linux桌面? 您使用什么工具来访问远程桌面? Xrdp是一个开源工具,允许用户通过Windows RDP访问Linux远程桌面. 除了Windows RDP之外,xr ...

  10. mongodb 主从

    mongodb 主从 因为条件限制我们把主从放在一台服务器上面 相关参数 在启动从的时候可以增加以下参数 --autoresync 当发现从服务器的数据不是最新时,开始从主服务器请求同步数据 --sl ...