当前位置: 首页 > news >正文

Docker 中 MySQL 的部署与管理

目录

  • 一、Docker 中部署 MySQL
    • 1.1 部署 MySQL
    • 1.2 进入容器并创建数据库
    • 1.3 Navicat 可视化工具连接
  • 二、可能存在的问题
    • 2.1 1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server
  • 参考资料

一、Docker 中部署 MySQL

1.1 部署 MySQL

首先,从 Docker Hub 下载

docker pull mysql:5.7.36

然后,在 Docker 容器中运行:

# Linux 系统
docker run --name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_HOST='%' \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7.36# Windows 系统 (cmd里面运行,Windows PowerShell里面运行不了)
docker run --name mysql ^
-p 3306:3306 ^
-e MYSQL_ROOT_HOST='%' ^
-e MYSQL_ROOT_PASSWORD=root ^
-d mysql:5.7.36

这个命令的作用是在后台运行一个 MySQL 5.7.36 版本的容器, 相关参数含义解释:

参数含义
docker run运行容器命令
--name mysql指定容器的名称为 mysql
-p 3306:3306将宿主机的 3306 端口映射到容器内的 3306 端口
-e MYSQL_ROOT_HOST='%'设置环境变量 MYSQL_ROOT_HOST 为 ‘%’,允许 root 用户从任何主机连接到 MySQL 服务。
-e MYSQL_ROOT_PASSWORD=root设置环境变量 MYSQL_ROOT_PASSWORD 为 ‘root’,设置 root 用户的密码为 ‘root’
-d在后台运行容器
mysql:5.7.36指定要使用的 Docker 镜像,即 MySQL 5.7.36 版本的镜像

如果使用了 -e MYSQL_ROOT_HOST='%', 我们后续还需要按照 2.1 节中的教程修改 mysql数据库里面的 user 表。否则,我们用 Navicat 连接数据库会报错 :1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server

当我们只在本地上面跑时,没必要设置 MYSQL_ROOT_HOST

1.2 进入容器并创建数据库

(1) 进入容器

mysql 容器里面进行数据库创建或者导入数据文件前,我们必须进入容器

docker exec -it mysql /bin/bash

这个命令的含义是在名为 mysql 的容器中打开一个交互式的 bash 终端,相关参数解析为:

  • docker exec: 这个命令允许你在运行的容器中执行命令。
  • -it: 这两个参数结合在一起表示要创建一个交互式的终端。-i 参数表示保持 STDIN 打开,即使没有连接到它,-t 参数表示分配一个伪终端。
  • mysql: 这是要执行命令的容器的名称或 ID。
  • /bin/bash: 这是要执行的命令,在这里是打开一个 bash 终端。

(2)数据库登录和创建

# 登录(密码已经在 docker run语句的参数里面设置)
# 参数 -u 和其后的用户名通常之间不需要空格隔开;参数 -p 和其后的密码也可以直接连在一起写
mysql -uroot -proot --default-character-set=utf8# 创建数据库
CREATE DATABASE mydatabase# 退出 MySQL 命令行客户端
exit

(3)导入数据

在导入数据之前,我们首先确保 宿主机中指定路径下sql 文件是否挂载到在容器里面(docker run 参数里面可以设置)。如果没有挂载的话,我们可以使用 docker cp 命令:

# docker cp 语法
docker cp /本地/路径/文件.sql 容器名称或ID:/容器内/路径/# 举个例子
C:\Users\username>docker cp D:\Learning\project\12306\resources mysql:/resources/
Successfully copied 8.22MB to mysql:/resources/

然后,我们在创建的数据库里面导入sql数据文件:

# 切换到指定的数据库(在某些情况下,该语句可能以及写到了sql数据文件里面)
use 指定的数据库名;-- 导入 SQL 文件
source /docker-entrypoint-initdb.d/mydata.sql;

(4)保存 mysql 容器

为了保存更新后的数据库,我们应该将容器保存为新的镜像

注意:在 Docker 中,镜像是不可更改的。一旦创建了一个镜像,就无法直接修改它。因此,无法直接覆盖原来的镜像。

docker commit [CONTAINER ID] [IMAGE NAME]   #容器ID  创建的镜像名
docker images   #可以看到该镜像已经创建成功,下次需要新建容器时可直接使用该镜像

举个例子,

C:\Users\username>docker commit mysql mysqlcloud
sha256:6953caac5bffdea0a7a867dc5fb483702f8b291e00759940aae8275f28966391C:\Users\username>docker images
REPOSITORY                      TAG            IMAGE ID       CREATED          SIZE
mysqlcloud                      latest         6953caac5bff   11 seconds ago   457MB
multi-container-app-todo-app    latest         4ce52cba239f   2 months ago     226MB
<none>                          <none>         abc68feda784   2 months ago     226MB
welcome-to-docker               latest         391a7884fcf8   2 months ago     225MB
mongo                           6              6d5c2fe902ad   2 months ago     690MB
docker/welcome-to-docker        latest         c1f619b6477e   4 months ago     18.6MB
zdocker/welcome-to-docker   latest         c1f619b6477e   4 months ago     18.6MB
nacos/nacos-server              v2.1.2         a978644d9246   14 months ago    1.06GB
redis                           latest         7614ae9453d1   2 years ago      113MB
mysql                           5.7.36         c20987f18b13   2 years ago      448MB
pangliang/rocketmq-console-ng   latest         ce1afb55c045   4 years ago      118MB
foxiswho/rocketmq               broker-4.5.1   d45240b3173d   4 years ago      440MB
foxiswho/rocketmq               server-4.5.1   12d0d03473de   4 years ago      440MB

1.3 Navicat 可视化工具连接

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_HOST='%' -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.36 语句中,我们已经设置好了端口号和密码。因此,Navicat 可视化工具连接中,我们可以这样填写信息:

  • 端口 填创建容器时 -p 后的第一个端口
  • 密码 填 -e 后写的密码

在这里插入图片描述

二、可能存在的问题

2.1 1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server

Navicat连接报错 ——1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server

解决方案:解决1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server_host ‘172.17.0.1’ is not allowed to connect to thi-CSDN博客

原因分析:

docker run --name mysql ^
-p 3306:3306 ^
-e MYSQL_ROOT_HOST='%' ^
-e MYSQL_ROOT_PASSWORD=root ^
-d mysql:5.7.36

docker run 语句里面,root 对应的 Host 为 % 。但是 Mysql 数据库里面没有,我们重新修改即可。

Host: 表示允许访问 MySQL 服务器的主机名或 IP 地址。

User: 表示用户的用户名。

mysql> select Host, User  from user ;
+-----------+---------------+
| Host      | User          |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
+-----------+---------------+
3 rows in set (0.00 sec)mysql> update user set Host='%' where User='root' ;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> flush privileges ;
Query OK, 0 rows affected (0.00 sec)mysql> select Host, User from user;
+-----------+---------------+
| Host      | User          |
+-----------+---------------+
| %         | root          |
| localhost | mysql.session |
| localhost | mysql.sys     |
+-----------+---------------+
3 rows in set (0.00 sec)

实际操作:

-- 显示所有数据库
mysql> show databases ;-- 切换到 mysql 数据库
use mysql;-- 显示 mysql 数据库中的所有表
show tables ;-- 查询 user 表中的 Host 和 User 列
select Host, User from user ;-- 将 user 表中 User 为 'root' 的记录的 Host 字段修改为 '%'
update user set Host='%' where User='root' ;-- 刷新权限
flush privileges ;

参考资料

docker 安装mysql,并创建数据库_docker创建mysql数据库-CSDN博客

运行在docker里面的mysql如何导入数据表 - 简书 (jianshu.com)

docker部署mysql,使用navicat可视化工具进行连接 - 知乎 (zhihu.com)

相关文章:

Docker 中 MySQL 的部署与管理

目录 一、Docker 中部署 MySQL1.1 部署 MySQL1.2 进入容器并创建数据库1.3 Navicat 可视化工具连接 二、可能存在的问题2.1 1130 - Host ‘172.17.0.1‘ is not allowed to connect to this MySQL server 参考资料 一、Docker 中部署 MySQL 1.1 部署 MySQL 首先&#xff0c;从…...

基础练习题之函数

前言 这些题目来自与一些刷题网站,以及c primer plus,继续练习 第一题 给你一个数&#xff0c;让他进行巴啦啦能量&#xff0c;沙鲁沙鲁&#xff0c;小魔仙大变身&#xff0c;如果进行变身的数不满足条件的话&#xff0c;就继续让他变身。。。直到满足条件为止。 巴啦啦能量…...

Java NIO浅析

NIO&#xff08;Non-blocking I/O&#xff0c;在Java领域&#xff0c;也称为New I/O&#xff09;&#xff0c;是一种同步非阻塞的I/O模型&#xff0c;也是I/O多路复用的基础&#xff0c;已经被越来越多地应用到大型应用服务器&#xff0c;成为解决高并发与大量连接、I/O处理问题…...

数据挖掘与大数据的结合

随着大数据技术的不断发展和普及&#xff0c;数据挖掘在大数据环境下的应用也变得更加广泛和深入。以下将探讨大数据技术对数据挖掘的影响&#xff0c;以及如何利用大数据技术处理海量数据并进行有效的数据挖掘&#xff0c;同时分析大数据环境下的数据挖掘挑战和解决方案。 1.…...

分布式链路追踪(一)SkyWalking(2)使用

一、使用方法 1、简介 agent探针可以让我们不修改代码的情况下&#xff0c;对Java应用上使用到的组件进行动态监控&#xff0c;获取运行数据发送到OAP上进行统计和存储。agent探针在Java使用中是使用Java agent技术实现。不需要更改任何代码&#xff0c;Java agent会通过虚拟…...

【QT入门】VS2019+QT的开发环境配置

声明&#xff1a;该专栏为本人学习Qt知识点时候的笔记汇总&#xff0c;希望能给初学的朋友们一点帮助(加油&#xff01;) 往期回顾&#xff1a; 【QT入门】什么是qt&#xff0c;发展历史&#xff0c;特征&#xff0c;应用&#xff0c;QtCreator-CSDN博客【QT入门】Windows平台下…...

RTP 控制协议 (RTCP) 反馈用于拥塞控制

摘要 有效的 RTP 拥塞控制算法&#xff0c;需要比标准 RTP 控制协议(RTCP)发送方报告(SR)和接收方报告(RR)数据包提供的关于数据包丢失、定时和显式拥塞通知 (ECN) 标记的更细粒度的反馈。 本文档描述了 RTCP 反馈消息&#xff0c;旨在使用 RTP 对交互式实时流量启用拥塞控制…...

基于SpringBoot SSM vue办公自动化系统

基于SpringBoot SSM vue办公自动化系统 系统功能 登录 个人中心 请假信息管理 考勤信息管理 出差信息管理 行政领导管理 代办事项管理 文档管理 公告信息管理 企业信息管理 会议室信息管理 资产设备管理 员工信息管理 开发环境和技术 开发语言&#xff1a;Java 使用框架: S…...

SpingBoot集成Rabbitmq及Docker部署

文章目录 介绍RabbitMQ的特点Rabbitmq术语消息发布接收流程 Docker部署管理界面说明Overview: 这个页面显示了RabbitMQ服务器的一般信息&#xff0c;例如集群节点的名字、状态、运行时间等。Connections: 在这里&#xff0c;可以查看、管理和关闭当前所有的TCP连接。Channels: …...

子组件自定义事件$emit实现新页面弹窗关闭之后父界面刷新

文章目录 需求弹窗关闭之后父界面刷新展示最新数据 实现方案AVUE 大文本默认展开slotVUE 自定义事件实现 父界面刷新那么如何用呢? 思路核心代码1. 事件定义2. 帕斯卡命名组件且在父组件中引入以及注册3. 子组件被引用与父事件监听4.父组件回调函数 5.按钮弹窗事件 需求 弹窗…...

【框架】跨端开发框架介绍(Windows/MacOS/Linux/Andriod/iOS/H5/小程序)

1. 跨端框架介绍 跨端框架 基本信息 说明 移动端 &#xff08;性能&#xff1a;uniapp < ReactNative < Flutter&#xff09; uniapp 注&#xff1a;weex已经嵌入uniapp 适用范围&#xff1a;Andriod、iOS、H5、国产小程序、快应用 引擎&#xff1a; 所属公司&#x…...

亚马逊云科技 Lambda 运行selenium

有些定时任务需要使用自动化测试的工具&#xff0c;如果使用亚马逊云科技 Lambda来实现这个功能的话&#xff0c;那么就需要图形框架&#xff0c;而我们知道lambda其实是一个虚拟机&#xff0c;而且按照系统级别依赖比较困难。所以这里选择使用容器的形式进行发布。 在dockerf…...

算法——前缀和之除自身以外数组的乘积、和为K的子数组、和可被K整除的子数组、连续数组、矩阵区域和

这几道题对于我们前面讲过的一维、二维前缀和进行了运用,包含了面对特殊情况的反操作 目录 4.除自身以外数组的乘积 4.1解析 4.2题解 5.和为K的子数组 5.1解析 5.2题解 6.和可被K整除的子数组 6.1解析 6.2题解 7.连续数组 7.1题解 7.2题解 8.矩阵区域和 8.1解析 …...

Text-to-SQL 工具Vanna + MySQL本地部署 | 数据库对话机器人

今天我们来重点研究与实测一个开源的Text2SQL优化框架 – Vanna 1. Vanna 简介【Text-to-SQL 工具】 Vanna 是一个基于 MIT 许可的开源 Python RAG&#xff08;检索增强生成&#xff09;框架&#xff0c;用于 SQL 生成和相关功能。它允许用户在数据上训练一个 RAG “模型”&a…...

linux最佳入门(笔记)

1、内核的主要功能 2、常用命令 3、通配符&#xff1a;这个在一些启动文件中很常见 4、输入/输出重定向 意思就是将结果输出到别的地方&#xff0c;例如&#xff1a;ls标准会输出文件&#xff0c;默认是输出到屏幕&#xff0c;但是用>dir后&#xff0c;是将结果输出到dir文…...

加速 PyTorch 模型预测常见方法梳理

目录 1. 使用 GPU 加速 2. 批量推理 3. 使用半精度浮点数 (FP16) 4. 禁用梯度计算 5. 模型简化与量化 6. 使用 TorchScript 7. 模型并行和数据并行 结论 在使用 PyTorch 进行模型预测时&#xff0c;可以通过多种方法来加快推理速度。以下是一些加速模型预测的常用方法&…...

【STM32定时器 TIM小总结】

STM32 TIM详解 TIM介绍定时器类型基本定时器通用定时器高级定时器常用名词时序图预分频时序计数器时序图 定时器中断配置图定时器定时 代码调试 TIM介绍 定时器&#xff08;Timer&#xff09;是微控制器中的一个重要模块&#xff0c;用于生成定时和延时信号&#xff0c;以及处…...

RISC-V 编译环境搭建:riscv-gnu-toolchain 和 riscv-tools

RISC-V 编译环境搭建&#xff1a;riscv-gnu-toolchain 和 riscv-tools 编译环境搭建以及说明 操作系统&#xff1a;什么系统都可以 虚拟机&#xff1a;VMmare Workstation Pro 17.50.x (版本不限) 编译环境&#xff1a;Ubuntu 18.04.5 CPU&#xff1a;i7-8750h(虚拟机分配4核…...

一文速通ESP32(基于MicroPython)——含示例代码

ESP32 简介 ESP32-S3 是一款集成 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE) 的 MCU 芯片&#xff0c;支持远距离模式 (Long Range)。ESP32-S3 搭载 Xtensa 32 位 LX7 双核处理器&#xff0c;主频高达 240 MHz&#xff0c;内置 512 KB SRAM (TCM)&#xff0c;具有 45 个可编程 GPIO 管…...

记录一次业务遇到的sql问题

刚开始工作 业务能力比较薄弱 记录一下这几天遇见的一个业务问题 场景 先简单说一下场景&#xff0c;有一批客户&#xff08;一张表&#xff09;&#xff0c;可以根据这个客户匹配出很多明细数据&#xff08;另一张表&#xff09;&#xff0c;现在需要删除明细&#xff0c;一个…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

uniapp中使用aixos 报错

问题&#xff1a; 在uniapp中使用aixos&#xff0c;运行后报如下错误&#xff1a; AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...