docker安装mysql看这一篇就够了

news2025/6/30 11:05:49

docker安装mysql

  • 一、 安装docker
  • 二、docker安装mysql
  • 三、设置MySQL远程访问

一、 安装docker

1、安装依赖环境,yum-utils

yum -y install yum-utils device-mapper-persistent-data lvm2
备注:

使用yum工具下载
yum是软件包管理工具
通过 执行 man yum
可以查看yum的帮助信息
2、设置镜像源,为yum源添加docker仓库位置

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装Docker
①:执行命令,提高软件安装速度(将软件包信息提前在本地缓存一份,用来提高搜索安装软件的速度)

	yum makecache fast

②:安装docker(docker-ce 社区版 而ee是企业版)

yum install docker-ce docker-ce-cli containerd.io

③:指定docker镜像存放目录

vim /etc/docker/daemon.json
进行编辑(json格式)
 {"graph": "/data/docker-data"}

④:启动,并设置为开机自启(因为你加了日志生成路径,可能会出错,不要慌!!可以查看后面解决方法)

1):刷新daemon.json文件

systemctl daemon-reload

2):启动Docker服务

systemctl start docker
sudo systemctl start docker
-- 重启
systemctl restart docker

3):设置开机自动启动

systemctl enable docker

4):测试

docker run hello-world

5:):查看docker 当前的状态

systemctl status docker
查看具体的错误信息
systemctl status docker -l
systemctl status docker.service

# 查看docker的版本信息
docker version
# 查看docker是否启动
ps -ef | grep docker
# 设置docker开机自启动
systemctl enable docker

二、docker安装mysql

1、拉取MySQL镜像
在进行MySQL容器的部署之前,需要先拉取MySQL镜像。可以通过以下命令拉取官方提供的MySQL镜像:

$ docker pull mysql

2、创建MySQL容器

  1. 先创建一个简单的mysql容器实例

     docker run -p 3306:3306 --name  sample-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:xxx(docker拉取的mysql的镜像版本号)
    
  2. 复制里面的/etc/mysql文件夹

     docker cp sample-mysql:/etc/mysql/. /mydata/mysql/conf
    
  3. 删除掉临时容器

     docker rm -f sample-mysql
    
  4. 启动完整的容器命令

     docker run \
     -p 3306:3306 \
     --name mysql \
     -e MYSQL_ROOT_PASSWORD=123456 \
     -v /mydata/mysql/log:/var/log/mysql \
     -v /mydata/mysql/data:/var/lib/mysql \
     -v /mydata/mysql/conf:/etc/mysql \
     --privileged=true \
     -d mysql:xxx(docker拉取的mysql的镜像版本号)
    
     默认端口启动完整命令:
     docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
     -v /usr/local/mysql/log:/var/log/mysql \
     -v /usr/local/mysql/data:/var/lib/mysql \
     -v /usr/local/mysql/conf:/etc/mysql \
     -v /etc/localtime:/etc/localtime:ro \
     -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
     自定义端口启动完整命令:
     docker run -p 13306:13306 --name mysql01 --restart=always --privileged=true \
     -v /mydata/mysql/log:/var/log/mysql \
     -v /mydata/mysql/data:/var/lib/mysql \
     -v /mydata/mysql/conf:/etc/mysql \
     -v /etc/localtime:/etc/localtime:ro \
     -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
    

启动命令解释:
-p 3306:3306:指定宿主机端口与容器端口映射关系
–name mysql:创建的容器名称
–restart=always:总是跟随docker启动
–privileged=true:获取宿主机root权限
-v /usr/local/mysql/log:/var/log/mysql:映射日志目录,宿主机:容器
-v /usr/local/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器
-v /usr/local/mysql/conf:/etc/mysql:映射配置目录,宿主机:容器
-v /etc/localtime:/etc/localtime:ro:让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读。
-e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456
-d mysql:latest:后台运行mysql容器,版本是latest。
命令执行之后如下图:
在这里插入图片描述

三、设置MySQL远程访问

1.通过docker进入mysql并修改允许用户远程访问

docker exec -it mysql01 /bin/bash

在这里插入图片描述出现报错Error response from daemon: Container 13a5e6e07143788f1fb62b8c344f7dd66a08ed2d2e3fb888ac74693331f7cc8a is restarting, wait until the container is running
查看日志,docker logs -f mysql01
报错信息如下:[ERROR] [MY-010095] [Server] Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files
此时我们需要修改mysql配置
2. 创建mysql配置文件:my.cnf

cd /mydata/mysql/conf
vi my.cnf

在配置文件中输入以下内容:

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

[mysqld]

# 设置东八区时区
default-time_zone = '+8:00'

# 设置密码验证规则,default_authentication_plugin参数已被废弃

# 改为authentication_policy

#default_authentication_plugin=mysql_native_password
authentication_policy=mysql_native_password

# 限制导入和导出的数据目录
# 为空,不限制导入到处的数据目录;
# 指定目录,必须从该目录导入到处,且MySQL不会自动创建该目录;
# 为NULL,禁止导入与导出功能
#secure_file_priv=/var/lib/mysql
secure_file_priv=

init_connect='SET collation_connection = utf8mb4_0900_ai_ci'

init_connect='SET NAMES utf8mb4'

character-set-server=utf8mb4

collation-server=utf8mb4_0900_ai_ci

skip-character-set-client-handshake

skip-name-resolve

默认的鉴权方式,我们修改为mysql_native_password,不然的话连接会报错。因为在mysql8以后的默认加密方式改变了,由 mysql_native_password 改为了caching_sha2_password。这种加密凡是在客户端无法访问,客户端支持的是mysql_native_password 。
3. 重启容器

docker restart mysql01

4.设置docker启动时启动mysql

docker update mysql01 --restart=always

5.重启mysql

docker restart mysql01

10.授权远程访问
不进行授权直接登陆的话会报错的,如图:
在这里插入图片描述
6. 进入容器内部

docker exec -it mysql01 /bin/bash

7.登录mysql
在这里插入图片描述
提示拒绝登录报错如下:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)
此时输入mysql 后直接回车,登录成功(此时MySQL未设置密码)
8.修改远程登录密码及允许的访问ip
查看用户表中root信息,执行如下命令

show databases;
use mysql;
select host, user, plugin,  authentication_string, password_expired from user;

结果如下图:
在这里插入图片描述
执行如下命令,修改登陆的密码

ALTER USER root@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'

再次查看后变成
在这里插入图片描述再执行如下命令,修改登录root用户的IP范围,%为允许所有ip

 update user set host='%' where user='root';  FLUSH PRIVILEGES; 

在这里插入图片描述到此如果MySQL容器是使用默认3306端口启动的,你就可以通过远程机器连接数据库了。
9. 自定义端口启动
但如果你修改了数据库默认端口,你还需要在/mydata/mysql/conf/下的my.cnf配置文件修改下默认端口
增加port=xxx 具体配置如下图:
在这里插入图片描述
10.修改完后重启容器

 docker restart mysql01

如果此时你还无法远程连接,那检查一下云服务的安全规则,比如我使用的是阿里的云服务器,需要检查 网络与安全-安全组,增加入方向的规则,授权对象为远程访问的机器所在网络的出口ip,如下图:
在这里插入图片描述备注:
搜索仓库镜像:docker search 镜像名
拉取镜像:docker pull 镜像名
查看正在运行的容器:docker ps
查看所有容器:docker ps -a
删除容器:docker rm container_id
查看镜像:docker images
删除镜像:docker rmi image_id
启动(停止的)容器:docker start 容器ID
停止容器:docker stop 容器ID
删除容器:docker rm 容器ID
重启容器:docker restart 容器ID
启动(新)容器:docker run -it ubuntu /bin/bash
进入容器:docker attach 容器ID或docker exec -it 容器ID /bin/bash,推荐使用后者。
启动docker服务
systemctl start docker
关闭docker
systemctl stop docker
重启docker
systemctl restart docker
docker设置随服务启动而自启动
systemctl enable docker.service
查看docker 运行状态
systemctl status docker #如果是在运行中 输入命令后 会看到绿色的active
docker logs -f mysql 查看容器日志

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

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

相关文章

nodejs+vue网上书城图书销售商城系统io69w

功能介绍 该系统将采用B/S结构模式,使用Vue和ElementUI框架搭建前端页面,后端使用Nodejs来搭建服务器,并使用MySQL,通过axios完成前后端的交互 系统的主要功能包括首页、个人中心、用户管理、图书类型管理、图书分类管理、图书信…

【Redis技术专区】「原理分析」探讨Redis 6.0为何需要启用多线程?

探讨Redis 6.0为何需要启用多线程 背景介绍开启多线程多线程的CPU核心配置IO多线程模式单线程处理方式多线程处理方式 为什么要开启多线程?充分利用多核CPU提高网络I/O效率响应现代应用需求 多线程实现启用多线程 最后总结 背景介绍 在Redis 6.0版本中,…

【ONE·MySQL || 数据类型 表的约束】

总言 主要内容:介绍MySQL中的常见数据类型(数值类型、文本二进制类型、时间日期、字符串类型),以及对表的约束(非空约束、默认约束、列描述、零填充约束、自增长约束、主键约束、唯一键约束、外键约束)。  …

【Vue】使用Axios请求下载后端返回的文件流,并能够提示后端报错信息

【需求】使用Axios请求下载后端返回的文件流,下载失败时提示信息不写死,按照后端返回的信息进行提示。 一、需求分析 看到这个需求的时候,有人可能会很疑惑,这不是直接就能获取到吗,直接message.error()弹框就完事了&…

【webpack】高级篇

webpack高级应用 安装流程提高开发效率与完善团队开发规范devtool属性 devServer属性下compress属性port属性headers请求头proxy开启代理https配置http2配置historyApiFallback配置开发服务器主机 host模块热替换与热加载 eslint代码规范取消黑色背景弹窗提示 git-hooks与husky…

Vue中methods,watch与computed之间的差异

Methods methods 选项定义了组件中可以调用的方法。这些方法可以在模板中通过事件绑定或者在其他方法中调用。methods 中的函数可以接受参数,并且可以执行任意的 JavaScript 代码。因此,methods 主要用于处理组件中的用户交互、事件响应和自定义的操作。…

【FileZilla的安装与使用以及主动与被动模式详解

目录 一. FileZilla是什么? 二. FileZilla的安装与使用 2.1 FileZilla服务端安装与配置 2.1.2 新建组 2.1.3 新建用户 2.1.4 新建目录 2.1.5 权限分配 (1)用户fu权限分配 2.2 FileZilla客户端安装与使用 2.2.1 权限分配测试 权限演…

【ARMv8M Cortex-M33 系列 2.1 -- Cortex-M33 使用 .hex /.srec 文件介绍】

请阅读【嵌入式开发学习必备专栏 之Cortex-M33 专栏】 文章目录 HEX 文件介绍英特尔十六进制文件格式记录类型hex 示例Cortex-M 系列hex 文件的使用 hex 文件和srec 文件生成Motorola S-Record (srec) 格式 HEX 文件介绍 .hex 文件通常用于微控制器编程,包括 ARM C…

JUC Lock 锁入门

文章目录 死锁(Deadlock)通过 Visualvm 等工具排查死锁 活锁park & unpark与 wait & notify 的区别park & unpark 实现:点外卖 Lock 对象ReentrantLock 可重入锁可重入lockInterruptibly 方法上锁(可打断)…

C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合

上一篇: C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果https://blog.csdn.net/beijinghorn/article/details/123478581 C#,入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程https://blog.csdn.net…

Field II 仿真软件——安装

1. 去官网下载文件压缩包 Field II Ultrasound Simulation Program (field-ii.dk) 在Download页面下载符合自己系统的压缩包。 2. 解压压缩文件,然后将这个文件夹添加到matlab的路径中,如下图所示: 3. 在matlab命令行输入:field…

05 HAL库驱动蜂鸣器唱出一首小歌

目录 一、蜂鸣器的基本知识 1、有源蜂鸣器 2、无源蜂鸣器 二、PWM的相关知识 1. PWM概念 2. PWM常见参数 3.PWM基本结构 三、蜂鸣器发出音调的原理 四、频率计算 五、实验开始 一、蜂鸣器的基本知识 蜂鸣器是一种能够发出持续而连续的声音的电子设备,它被…

【十一】【C++\动态规划】1218. 最长定差子序列、873. 最长的斐波那契子序列的长度、1027. 最长等差数列,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略,它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题,并将每个小问题的解保存起来。这样,当我们需要解决原始问题的时候,我们就可以直接利…

.NET进阶篇06-async异步、thread多线程2

知识须要不断积累、总结和沉淀,思考和写做是成长的催化剂web 内容目录 1、线程Thread 一、生命周期 二、后台线程 三、静态方法 1.线程本地存储 2.内存栅栏 四、返回值 2、线程池ThreadPool 一、工做队列 二、工做线程和IO线程 三、和Thread区别 四、定时器 1、线…

3D视觉-激光三角测量法的分类

按照入射激光光束和被测物体表面法线的角度关系,一般分为直射式和斜射式两种方式。 1)直射式测量 如图所示,激光器发出的光线,经会聚透镜聚焦后垂直入射到被测物体表面上,物体移动或者其表面变化,导致入射…

纯CSS的华为充电动画,它来了

📢 鸿蒙专栏:想学鸿蒙的,冲 📢 C语言专栏:想学C语言的,冲 📢 VUE专栏:想学VUE的,冲这里 📢 Krpano专栏:想学Krpano的,冲 &#x1f514…

ubuntu磁盘管理常用命令

写的不全,后面随时修改。 Linux 磁盘管理常用三个命令为 df、du 和 fdisk。 df(英文全称:disk free):列出文件系统的整体磁盘未使用量du(英文全称:disk used):检查磁盘空…

GcExcel:DsExcel 7.0 for Java Crack

GcExcel:DsExcel 7.0-高速 Java Excel 电子表格 API 库 Document Solutions for Excel(DsExcel,以前称为 GcExcel)Java 版允许您在 Java 应用程序中以编程方式创建、编辑、导入和导出 Excel 电子表格。几乎可以部署在任何地方。 创建、加载、…

[python]python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频

当电脑没有立体声混音导致Python写代码无法使用pyaudio进行录制系统声音怎么办?查阅资料和安装驱动等方法都不行,难道没办法了吗?那为什么电脑其他软件可以做到呢?因此研究了一下pyaudio在没有立体声混音情况下确实无法录制声音&a…

数据模型设计

数据模型设计,可以理解为数据库中的表结构设计。 我们在设计器中创建的数据模型,也称为实体。我们将前端页面中传过来的数据保存到对应的实体中,即为将前端数据保存到了数据库中。 1 、实体与枚举的创建 1 .1 创建供应商 supplier实体 在左…