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

news2024/9/23 3:30:28

文章目录

    • 一、Docker的安装以及在Docker下进行mysql的安装
      • 1、安装Docker
      • 2、上传安装包并进行安装并启动docker
      • 3、 配置Docker的镜像加速器,这里使用阿里云的镜像
      • 4、刷新守护进程,并重启docker,检验镜像是否配置成功
      • 5、搜索并下载mysql镜像
      • 6、导入或者加载mysql镜像
      • 7、安装完成后运行mysql
    • 二、解决mysql3306端口被占用方法:
    • 三、 解决1251- Client does not support authentication protocol requested by server...的问题

一、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发现可以连接
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/400923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超分扩散模型 SR3 可以做图像去雨、去雾等恢复任务吗?

文章目录前言代码及原文链接主要的点如何进行图像恢复前言 关于扩散模型以及条件扩散模型的介绍,大家可以前往我的上一篇博客:扩散模型diffusion model用于图像恢复任务详细原理 (去雨,去雾等皆可),附实现代码。 SR3是利用扩散模…

优化Facebook广告ROI的数据驱动方法:从投放到运营

“投放广告并不是最终的目的,关键在于如何最大程度地利用数据驱动的方法来提高广告投放的回报率(ROI)”Facebook广告是现代数字营销中最为常见和重要的广告形式之一。但是,要让Facebook广告真正发挥作用,需要通过数据驱…

Allegro如何自动添加测试点操作指导

Allegro如何自动添加测试点操作指导 在做PCB设计的时候,在一些应用场合下需要给PCB上的网络添加测试点,如下图 测试点除了可以手动逐个添加之外,Allegro还支持自动添加测试点,具体操作如下 点击Manufacture点击Testprep

PlantUML画出如女神漂亮的流程图

一:环境准备 1,本地安装好vscode 2,vscode安装PlantUML插件 3,本地安装java环境,我本地用的是jdk-11.0.178,配置好环境变量 4,在vscode上新建一个文件以wsd结尾,输入以下两行&#x…

Go语言容器之数组和切片

Go语言的容器分为值类型和引用数据类型 一、数组 1.数组的声明和初始化 (1) 数组声明的语法 var 数组变量名 [数组大小]数组类型 举例: package main import "fmt"func main(){//数组的声明var arr[10]int//打印数组长度fmt.Println("arr的长度为…

《Java高并发核心编程. 卷1, NIO、Netty、Redis、ZooKeeper》 读书笔记

第2章 高并发IO的底层原理 2.1 IO读写的基本原理 为了避免用户进程直接操作内核,保证内核安全,操作系统将内存(虚拟内存)划分为两部分:一部分是内核空间(Kernel-Space),另一部分…

Ubantu docker学习笔记(二)拉取构建,属于你的容器

文章目录一、拉取启动容器二、本地镜像初解三、构建镜像3.1使用docker commit构建镜像切换阿里镜像3.2使用dockerfile构建镜像四、总个结吧这里的话,就详细说说小唐对于容器的配置,对了!小唐参考的书籍是Linux容器云实战!&#xf…

做更好的自己!NAS部署wiki.js现代化知识管理工具,让知识上云!

知识管理是一个永恒的课题,各种方法、工具层出不穷。老Q这么多年也体验过了非常多的工具,这几年来,老Q使用的工具逐步从付费迁移到开源,从公有云迁移到私有云。前者是为了折(SHENG)腾 (QIAN&…

红黑树的介绍和实现

文章目录1. 红黑树1.1 红黑树的概念1.2 红黑树的性质1.3 红黑树节点的定义1.4 红黑树的插入1.5 红黑树的验证1.6 红黑树与AVL树的比较1. 红黑树 1.1 红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以…

linux 内存泄露检测工具-Valgrind的使用

Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。安装,我是先valgrind一下发现这个的版本apt install valgrind # version 1:3.15.0-1ubuntu9.1新建一个项目与添加一个main.c编辑main.c的代码:#include <stdio.h> /*标准输入输出定义*/ #incl…

springcloud3 GateWay

一 GateWay 1.1 GateWay的作用 gateway相当于所有服务的门户&#xff0c;将客户端请求与服务端应用相分离&#xff0c;客户端请求通过gateway后由定义的路由和断言进行转发&#xff0c;路由代表需要转发请求的地址&#xff0c;断言相当于请求这些地址时所满足的条件&#xff…

Mybatis中的一级缓存和二级缓存

Mybatis作为一款强大的ORM框架&#xff0c;其中也用到了缓存来加速查询&#xff0c;今天我们一起来探讨下。 Mybatis可以使用懒加载来提高查询的效率&#xff0c;并且可以通过缓存来提高查询的效率。其中包括有一级缓存和二级缓存。 一级缓存是sqlSession级别的缓存&#xff0c…

怎么给电脑分盘与合并磁盘?教你三招

电脑只有一个C盘&#xff0c;想要再分出一个或多个分区&#xff0c;怎么办&#xff1f;电脑C盘的容量太小&#xff0c;太容易满了&#xff0c;想重新分盘&#xff0c;或者把其他盘跟它合并&#xff0c;但因为文件太多备份实在是太麻烦&#xff0c;怎么办&#xff1f;怎么给电脑…

tomcat 启动时卡住问题排查

正常项目无法访问&#xff08;Linux 服务器&#xff09;&#xff0c;启动tomcat时卡在下图位置&#xff0c;项目无法启动。 1、先检查tomcat日志、项目日志没有报错信息&#xff0c;且没再产生新的日志信息。 2、jdk、tomcat 、 jvm 配置&#xff0c;服务器环境、内存、存储没…

论文阅读:Adversarial Cross-Modal Retrieval对抗式跨模式检索

Adversarial Cross-Modal Retrieval 对抗式跨模式检索 跨模态检索研究的核心是学习一个共同的子空间&#xff0c;不同模态的数据可以直接相互比较。本文提出了一种新的对抗性跨模态检索&#xff08;ACMR&#xff09;方法&#xff0c;它在对抗性学习的基础上寻求有效的共同子空间…

JVM学习笔记九:对象实例化与直接内存

0. 前言 声明&#xff1a; 感谢尚硅谷宋红康老师的讲授。 感谢广大网友共享的笔记内容。 B站&#xff1a;https://www.bilibili.com/video/BV1PJ411n7xZ 本文的内容基本来源于宋老师的课件&#xff0c;其中有一些其他同学共享的内容&#xff0c;也有一些自己的理解内容。 1. …

一文解码:如何在人工智能热潮下实现产业“智”变

近期由ChatGPT有关人工智能的话题引发了全民热议&#xff0c;在这股子浪潮下&#xff0c;讨论最多的话题就是ChatGPT的出现会为我们带来怎样的技术变革&#xff1f;是否会改变我们目前的生产方式&#xff1f;对于未来人工智能技术的发展&#xff0c;我们该如何客观看待&#xf…

Unity Lighting -- 使用Light Probes

什么是动态物体&#xff08;dynamic objects&#xff09; 到目前为止的例子中&#xff0c;我们场景中的所有东西都是静止的。但在实际的游戏或实时应用中&#xff0c;场景中有移动的物体很正常&#xff0c;比如走动的人或动物&#xff0c;汽车&#xff0c;飞机等&#xff0c;它…

MRCP在美团语音交互中的实践和应用

当你和智能语音机器人对话交互时&#xff0c;你是否好奇电话背后的机器人如何“听懂”你的意思&#xff0c;又如何像人一样“回答”你的问题&#xff1f;其中比较重要的技术就是 MRCP。本文主要介绍了 MRCP 在美团语音交互中的实践和应用&#xff0c;基于美团自研的语音识别及语…

动态规划入门经典问题讲解

最近开始接触动态规划问题&#xff0c;以下浅谈&#xff08;或回顾&#xff09;一下这些问题的求解过程。解题思路对于动态规划问题&#xff0c;由于最终问题的求解需要以同类子问题作为基础&#xff0c;故需要定义一个dp数组&#xff08;一维或二维&#xff09;来记录问题求解…