mysql Docker容器的安装(centos版)以及修改docker默认端口、解决1251问题

一、Docker的安装以及在Docker下进行mysql的安装

1、安装Docker

进入Docker镜像下载页面,安装Docker,这里我选择CE个人版
https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
在这里插入图片描述

2、上传安装包并进行安装并启动docker

将Docker镜像传入虚拟机root目录
在这里插入图片描述
查看是否上传成功
在这里插入图片描述
安装docker镜像并启动docker

yum install docker-ce-18.06.0.ce-3.el7.x86_64.rpm -y //安装docker镜像
[root@localhost ~]# systemctl start docker //启动docker
[root@localhost ~]# system status docker //查看docker状态
[root@localhost ~]# docker info  //查看docker信息

在这里插入图片描述
在这里插入图片描述
这里我们可以看出我们的容器、镜像数都为0,因为这里没有配置,所以个数为0
在这里插入图片描述

3、 配置Docker的镜像加速器,这里使用阿里云的镜像

进入[root@localhost ~]# vi /etc/docker/daemon.json编辑文本,配置镜像加速器

{
  "registry-mirrors": ["https://w2plr83n.mirror.aliyuncs.com"]
}

4、刷新守护进程,并重启docker,检验镜像是否配置成功

systemctl daemon-reload   // 刷新守护进程

systemctl restart docker  //重启docker

docker info  // 效验配置是否成功

如果远程仓库出现阿里云镜像加速器,则说明配置成功
在这里插入图片描述

5、搜索并下载mysql镜像

[root@localhost ~]# docker search mysql //搜索镜像
name:镜像名字
description:镜像描述
stars:镜像的点赞率
official:官方
automated:自动构建

docker pull mysql  //下载镜像

docker images //列举本地仓库的所有镜像

在这里插入图片描述
在下载mysql镜像时,如果在docker pull mysql命令后不加版本号的话,默认的是下载最新版本的mysql镜像,如果需要下载其他版本的镜像可在其后面docker pull mysql:版本号
在这里插入图片描述
在这里插入图片描述

6、导入或者加载mysql镜像

这里使用XFTP上传centos7.tar和mysql.tar镜像到虚拟机并将镜像导入

docker load -i mysql.tar //导入mysql镜像
docker load -i centos7.tar  //导入centos7镜像

[root@localhost ~]# docker images  //查看所有镜像信息

在这里插入图片描述
在这里插入图片描述
可以看出我们刚刚上传的镜像已经全部导入到仓库里面了
在这里插入图片描述

7、安装完成后运行mysql

如果之前没有安装过mysql,这里可以直接使用下面命令进行安装

docker run -d -p 3306:3306 --name mysql -v /mysqldata/mysql/log:/var/log/mysql  -v /mysqldata/mysql/data:/var/lib/mysql  -v /mysqldata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=123456   mysql:latest

//上面相关命令含义
docker run:在docker中启动一个容器实例
-d:该容器在后台运行
-p 3306:3306:容器与主机映射端口为, 3306(主机端口,即外部连接mysql使用的端口号): 3306(容器端口)
--name mysql:容器运行后的名称
-v /mysqldata/mysql/log:/var/log/mysql:将容器/var/log/mysql目录下的数据,备份到主机的 /mysqldata/mysql/log目录下
-v /mysqldata/mysql/data:/var/lib/mysql:将容器/var/lib/mysql目录下的数据,备份到主机的 /mysqldata/mysql/data目录下
-v /mysqldata/mysql/conf:/etc/mysql:将容器/etc/mysql目录下的数据,备份到主机的 mysqldata/mysql/conf目录下
-e MYSQL_ROOT_PASSWORD=123456:设置当前mysql实例的密码为123456
mysql:latest:需要运行的容器名称以及版本号

通过此处-v 命令备份后,就算当前mysql容器实例被删除,那么再次重启mysql容器后,数据将会自动重主机加载到容器当中


二、解决mysql3306端口被占用方法:

由于我之前安装过了mysql导致3306端口被占用导致出现以下错误信息,所以这里我选择更改mysql默认端口
在这里插入图片描述
解决方案:
1、创建mysql容器

docker run -itd --name mysql1 -p 3307:3307 -e MYSQL_ROOT_PASSWORD=123456 mysql

//-name :容器名字
//-p:端口号为3307
//MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。

在这里插入图片描述
2、进入容器,进入vim /etc/mysql/my.cnf 修改端口号,修改完成保存并退出
这里如果出现命令错误,那么需要我们安装一个vim文本编辑器

//进入容器
docker exec -it mysql80 /bin/bash

//安装vim,必须先update在install
apt-get update 
apt-get install vim

//修改端口号:port=3307
vim /etc/mysql/my.cnf 

在这里插入图片描述
3、先将 my.cnf 复制到宿主机修改,修改完成再复制进容器

命令说明
mysql1: 容器名
/etc/mysql/my.cnf:容器中 my.cnf路径
/root:my.cnf在宿主机保存路径

docker cp mysql1t:/etc/mysql/my.cn

f /root
4、vim my.cnf 进入文件修改或添加端口号,将端口号改为3307
在这里插入图片描述
5、将文件重新复制进容器,然后重启容器

docker cp /root/my.cnf mysql1:/etc/mysql/  //将文件重新复制进容器

docker restart mysql1 //重启容器

6、进入容器在容器中连接数据库,查看我们端口是否修改成功

[root@localhost ~]# docker exec -it mysql1 bash //进入容器

root@5a84febd725a:/# mysql -u root -p //在容器中连接数据库

mysql> show global variables like 'port'; //查看端口是否修改成功


这里我们可以看出端口已经修改成功
在这里插入图片描述

三、 解决1251- Client does not support authentication protocol requested by server…的问题

错误信息这时候我们去连Navicat发现连接不上
在这里插入图片描述
解决办法:
查看用户表里面的主机Host是否为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码,这里我发现都踩了雷,所以我猜想是不是应该是这里出了问题

mysql> select host,user,plugin,authentication_string from mysql.user; //查看用户表和主机表

在这里插入图片描述
这里我将主机更改为%并且把加密方式改变为mysql_native_password. :

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
更新user为root,host为% 的密码为123456

重新去连接Navicat发现可以连接
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值