Docker部署MySQL

Docker 中 MySQL 的部署与管理 探索在 Docker 中部署 MySQL,包括数据库创建、数据导入,并使用 Navicat 实现便捷可视化连接,轻松管理你的数据库环境。 阅读详情
 

镜像下载: docker search mysql,pull第一个官方的就行

支持的tag

  • 8.0.17, 8.0, 8, latest

  • 5.7.27, 5.7, 5

  • 5.6.45, 5.6

翻译自Docker MySQL官方镜像文档

原文链接:https://github.com/docker-library/docs/tree/master/mysql

其他的官方镜像的文档都可以在https://github.com/docker-library/docs/里找到

启动mysql服务

启动MySQL很简单

用法:
docker run --name some-mysql   -e   MYSQL_ROOT_PASSWORD=root 用户密码 -d mysql:tag 
--name 指定容器的名字
-e 指定容器的环境变量
-d 设置容器在后台运行并输出容器id
tag 指定想要的mysql版本,不加默认使用最新
​
创建并运行一个叫mysqlserver的mysql容器
docker run --name  mysqlserver  -e MYSQL_ROOT_PASSWORD=123456  -d mysql
​
ps 命令看到mysqlserver正在运行
​

<!-- more -->

从MySQL命令行客户端里连接mysql

这个镜像不仅可以做上面那个mysql服务端,也可以用来做客户端来连接其他容器里的mysql,或者其他地方的mysql

上面的启动的容器是mysql服务端,下面的命令可以启动一个作为mysql命令行客户端的容器,并且连接到上面启动的那个容器里的mysql

 

1.  docker  run  -it  --rm mysql mysql -h容器的ip地址 -uexample-user -p
- 查看mysqlserver容器的ip地址
bigdata@ljh-X441UVK:~$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'  mysqlserver
172.17.0.2
通过指定ip连接(mysql命令的-h参数)
 docker  run  -it  --rm mysql mysql -h172.17.0.2  -uroot  -p
​
2. 通过指定 network连接
可以直接通过容器名字连接,不用输入ip地址
- 创建一个network 网络
```shell
docker network create -d bridge mysqlnet
bigdata@ljh-X441UVK:~$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
71dfa846b9c6        bridge              bridge              local
9fef614764d3        host                host                local
87bc32c1bc3b        mysqlnet            bridge              local
6d83addc4da3        none                null                local
```
- 将mysqlserver添加到mysqlnet网络里
```shell
docker network connect mysqlnet mysqlserver
```
- mysql客户端命令行 启动时指定mysqlnet网络
启动的容器连接到网络mysqlnet后
运行的命令是 mysql -hmysqlserver  -uroot  -p
mysql -h 指定为mysqlserver这个容器名字,因为mysqlserver在这个网络里,不用写ip地址(可能在同一个网络里有host映射)
docker  run  -it --network mysqlnet --rm mysql mysql -hmysqlserver  -uroot  -p
​
3 . 通过--link参数 指定来连接
​
docker run -it  --link mysqlserver  --rm mysql  mysql -hmysqlserver -uroot -p 

连接其他的mysql,修改-h对应的即可

 

 

关于MySQL命令行的更多信息请查看:MySQL documentation

访问容器shell和浏览MySQL日志

docker exec命令可以在Docker容器里运行一个命令.下面这个命令在你的mysql容器里给启动一个交互式的(-it)bash shell

docker exec -it some-mysql bash

可以通过Docker的容器日志查看日志

docker logs some-mysql

使用自定义的MySQL配置文件

默认的配置文件在/etc/mysql/my.cnf,!includedir 里可能有额外的目录,比如/etc/mysql/conf.d或者/etc/mysql/mysql.conf.d.请在mysql镜像里检查相关文件

如果/my/custom/config-file.cnf是自定义的配置文件的目录和文件名,可以这样启动mysql容器(注意这个命令里只使用了自定义配置文件的目录的路径)

docker run -name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

这个命令会启动一个新的mysql容器,使用/etc/mysql/my.cnf和/etc/mysql/conf.d/config-file.cnf这两个配置文件的合并结果,后面那个的配置文件的配置优先

不用cnf文件来配置配置

很多配置选项可以作为标记通过mysqld传递.这样可以很灵活的不用cnf文件来自定义容器.比如,你只想改变默认的编码和Collation字符集 成UTF-8(utf8mb4),只需运行下面的

docker run -name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8m4 --collation-server=utf8m4_unicode_ci

如果想查看全部可以用的选项,只需要运行:

docker run -it --rm mysql:tag --verbose --help

 

环境变量

当你启动mysql镜像,你可以在docker run命令行里传递一个或者更多环境变量来调整MySQL的配置.注意如果启动的容器有一个已经包含数据库的数据目录,下面的变量将不会有效果:已存在的数据库不会有变化.

查看这个连接https://dev.mysql.com/doc/refman/5.7/en/environment-variables.html 查看MySQL本身支持的环境变量的文档(特殊的变量像MSQL_HOST,和这个镜像使用的时候会出现问题)

MYSQL_ROOT_PASSWORD

这个变量必须存在,指定的密码将会设置为MySQLroot用户的密码.在上面的例子里,他是设置成my-secret-pw.

MYSQL_DATABASE

这个变量是可选的,如果指定了,在镜像启动时会用这个的值创建一个数据库.如果也指定了 user/password (下面),这个用户会被授予这个数据库的超级权限

MYSQL_USER,MYSQL_PASSWORD

这些变量是可选的,结合在一起使用来创建一个新用户和设置用户的密码.这个用户会被授予上面通

注意这里不需要用这个机制来创建root用户,root用户会用MYSQL_ROOT_PASSWORD变量指定的密码来创建.

MYSQL_ALLOW_EMPTY_PASSWORD

这是个可选的变量.设置yes 就允许root用户用一个空白的密码来启动容器.注意:不推荐设置成yes除非你知道你在干什么,因为这个会让你的MySQL实例完全没有保护,任何人都能获得完整的超级用户权限

MYSQL_RANDOM_ROOT_PASSWORD s 这是一个可选变量.设置成yes会随机产生一个初始化密码给root用户(使用pwgen).这个生成的密码会输出到标准输出里.

MYSQL_ONETIME_PASSWORD

设置root 用户初始化完后就过期,第一次登录时强制修改密码.注意:这个功能只支持MySQL 5.6+.在MySQL 5.5使用会在初始化时抛出一个错误.


后面的未认真翻译

Docker 隐私

作为通过环境变量来传递敏感信息的代替,_FILE可能是拼接到之前列出的环境变量里,初始化脚本从一个容器的文件里加载这些变量的值,这个可以用从保存在/run/secrets/<secret_name>文件的Docker secrets 加载密码

比如

docker run -name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mysql:tag

当前只支持MYSQL_ROOT_PASSWORD,MYSQL_ROOT_HOST,MYSQL_DATABASE,MYSQL_USER和MYSQL_PASSWORD

初始化一个新鲜的实例

当容器第一次启动时,将会创建一个指定名字的数据库和用提供的配置变量来初始化.此外,还会执行在/docker-entrypoint-initdb.d里的.sh,.sql和.sql.gz文件.文件会按照字母排序执行.你可以通过mounting a SQL dump into that directory和提供一个custom images带有贡献的数据.SQL 文件会默认导入通过MYSQL_DATABASE变量指定的数据库.

注意事项

在哪里保存数据

重要的提示:这里有几个方式来保存在Docker 容器上运行的应用使用的数据,我们鼓励mysql镜像的用户熟悉下面可用的选项,包括:

  • 让Docker 管理数据库数据的保存通过用他内部的volume management来写入数据库文件到宿主机,这个是默认的,并且对于用户来说很容易和公平透明.缺点是这些文件很难被直接运行在宿主机上的工具和应用定位.i.e outside container

  • 创建一个数据目录在宿主机上(容器外),在容器里挂载这个目录可见,这样把数据库文件放在宿主机上知道的位置,并且容器宿主机上的工具和应用访问这些文件.缺点是用户需要确定目录存在,和比如权限和其他安全机制配置正确

Docker 文件是个好起点来理解不同的存储选项和变化,这里有很多blog和论坛帖子讨论和给建议 。简单展示下上面后面选项的基本流程

  1. 在宿主系统的合适volume创建一个目录,比如/my/own/datadir.

  2. 启动mysql容器 docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

    命令的-v /my/own/datadir:/var/lib/mysql部分,从宿主下挂在/my/own/datadir作为容器里的/var/lib/mysql,那里是MySQL默认的数据文件的地方

 

直到MySQL初始化完成之前没有连接

当容器启动时如果没有数据库初始化,将会创建一个默认的数据库.这个是预期的行为,这意味着它将不会接受传入的连接直到初始化完成.这个会在使用自动化工具时有问题,比如docker-compose,这个会同时启动几个容器

如果你尝试连接MySQL的应用没有处理MySQL 停机或者等待MySQL完美启动,在服务启动前放一个连接重试是必须的.在官方镜像里这样的实现,WordPress或者Bonita

对于已存在的数据库的用法

如果你启动一个有数据目录的mysql容器,而且存在了一个数据库(specifically,一个mysql子目录),应该从命令行里提交一个$MYSQL_ROOT_PASSWORD变量;他无论如何都会被忽略,并且已存在的数据库不会改变

以任意的用户运行

如果你知道你目录的权限已经设置合理(比如对于一个已存在的数据库运行,像上面说的)或者你需要指定mysqld运行的UID/GID.可以用--user来调用镜像设置任何值来完成想要的权限/配置

mkdir data
ls -lnd data
 docker run -v "$PWD/data":/var/lib/mysql --user 1000:1000 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
​

创建数据库导出

大多数正常的工具都能用,尽管他们的用法有一点令人费解 在一些场合来确保他们有权限访问mysqld服务.一个简单的方法来确保就是使用docker exec和从相同的容器里运行工具,像下面这样:

docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql

从导出文件里恢复数据

对于恢复数据,你可以用-i选项的docker exec命令,像下面这样:

$ docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql

Docker部署Mysql8 文章目录一、前置需求1.linux系统2.安装docker二、部署方法1.拉取mysql8镜像2.创建配置文件挂载目录和数据挂载目录3.创建配置文件4.启动容器并挂载目录5.进入mysql创建用户三、访问测试 一、前置需求 1.linux系统 本人用的Centos7 2.安装docker 参考这篇文章 https://blog.youkuaiyun.com/weixin_43721000/article/details/124237932 二、部署方法 1.拉取mysql8镜像 docker pull mysql: 阅读详情

相关推荐

Docker部署MySQL主从详细教程

MySQL主从复制是一种数据库复制技术,用于在多个MySQL数据库之间同步数据。在主从复制中,一个MySQL服务器(称为主服务器或主节点)作为数据源,将其数据库的更改传播到一个或多个MySQL服务器(称为从服务器或从节点)。从服务器接收主服务器的更改并将其应用到本地数据库,从而实现数据的复制和同步。

阿木木AEcru的博客 2450

docker 拉取mysql

### mysql8.0.29 拉取mysql docker pull mysql:8.0.29 建立容器 ``` bash docker run -itd -P --restart always -e TZ=Asiz/Shanghai -e MYSQL_ROOT_PASSWORD=root --name mysql mysql:8.0.29 ``` ​ -P端口 ​ --restart always 自动启动 ​ tz=时区 测试 docker run -it --rm...

c_chuxuezhe_的博客 985

Docker | Docker部署MySQL

大家好,我是Leo哥🫣🫣🫣,前面我们学习了Docker的安装以及Docker的基本命令。这节我们来学习在Docker中如何安装MySQL环境。好了,话不多说让我们开始吧😎😎😎。以上便是本文的全部内容,本人才疏学浅,文章有什么错误的地方,欢迎大佬们批评指正!我是Leo,一个在互联网行业的小白,立志成为更好的自己。如果你想了解更多关于Leo,可以关注微信公众号-程序员Leo,后面文章会首先同步至公众号。本文由博客一文多发平台OpenWrite发布!

分享思想,留下痕迹。 3739

docker run -i -t mysql_docker-mysql

Table of ContentsIntroductionDockerfile to build a MySQL container image which can be linked to other containers.ContributingIf you find this image useful here's how you can help:Send a Pull Request w...

weixin_39657300的博客 225

农业杂草检测——棉花杂草数据集

然后将本层13×13的特征图谱经过×2上采样扩充到26×26,并与上层中26×26的特征图谱拼接,得到新的26×26的特征图谱,在该特征尺度上进行第二次预测,此时得到的特征图谱是相对输入图像16倍下采样,具有中尺度感受野,适合检测中等尺度对象;通过目标检测,能够及时清除杂草,减少病虫害的滋生和传播,保障棉花的健康生长,并有助于降低生产成本。对于地膜覆盖的棉田,由于膜内耕作层土温高、底墒好,杂草出苗早而集中,一般覆膜后5 - 7天杂草陆续出土,在墒情好的情况下,15天左右即形成出土高峰。

qq_38220914的博客 1247

#基于原生JS的交互式代码高亮编辑器实现教程

本文介绍了一个轻量级交互式代码高亮编辑器的实现方案。该编辑器采用原生JavaScript开发,支持语法高亮、行号显示、主题切换等核心功能,适合嵌入博客、文档等场景使用。 项目技术栈包括HTML5/CSS3/JavaScript,使用Prism.js实现语法高亮,prettier提供代码格式化功能。编辑器界面分三个区域:顶部工具栏(语言选择/主题切换)、中间编辑区(行号+代码)、底部状态栏(语言/字符数)。 核心功能实现包括:通过contenteditable属性创建可编辑区域,Flex布局实现行号与代码同步

qq_42386733的博客 1036

Docker部署Mysql数据库详解

Docker是一种流行的容器化平台,可以简化应用程序的部署和管理。在本博客中,我们将探讨如何使用Docker部署两个广泛使用的数据库:MySQL。我们将提供详细的步骤和相应的命令,以帮助您轻松地在Docker容器中设置和运行这个数据库。

m0_58523831的博客 1万+

手把手教你用AirSim和Unreal4在Ubuntu上创建自定义无人机仿真场景

本指南详细介绍了如何在Ubuntu系统上使用AirSim和Unreal Engine 4搭建高精度无人机仿真环境。从硬件配置、驱动安装到Unreal Engine编译和AirSim集成,手把手教你创建自定义场景,适用于算法验证和开发测试。

y7z8a的博客 257

四、Docker安装mysql

Docker安装mysql

dears-app的博客 283

Python办公自动化:用python-docx打造专业级Word表格边框(附完整代码)

本文深入探讨了如何利用python-docx库精细控制Word表格边框,实现办公自动化。通过解析底层XML结构,提供了通用的`set_cell_border`函数,并附上完整代码,帮助用户轻松打造符合商业规范的专业级表格,提升报告、合同等文档的生成效率与视觉效果。

weixin_29089057的博客 546

告别兼容性困扰:在F-Droid中安全部署Termux的完整指南

本文提供了一份在F-Droid中安全部署Termux的完整指南,旨在彻底解决Android设备上的兼容性困扰。文章详细阐述了为何选择F-Droid而非Google Play商店,并逐步指导用户完成从彻底清理旧版本、安装F-Droid客户端、授予权限到最终安装配置Termux的全过程。指南还涵盖了进阶的稳定性配置、数据迁移方法以及常见问题排查,确保用户获得一个稳定、无冲突的命令行工作环境。

weixin_29224309的博客 944

docker安装mysql-简单无坑

1.切换root用户2.下载镜像文件 3.创建实例并启动 出现一长串的id即表示mysql启动成功【端口映射与文件挂载】 参数说明 -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口 -name:容器名称 -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机 -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机 -v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载

秃了也弱了 1333

【AI大模型:前沿】46、AI+无人机:智能飞行革命全景指南——从技术突破到行业应用与未来趋势

AI+无人机的融合不仅是技术迭代,更是“空间生产力”的革命——它将人类活动范围从地面拓展至低空,重构物流、农业、应急等行业的生产方式。当前,技术突破(如多模态感知、群体智能)与法规松绑(超视距飞行许可)正加速产业化,预计2030年全球低空经济市场规模将突破万亿美元。技术层:轻量化AI模型、边缘-云端协同、安全冗余系统;应用层:垂直领域解决方案(如电网AI巡检、精准农业);生态层:无人机巢建设、空管系统、数据服务平台。

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 5593

如何用Docker部署Mysql

可以通过挂载卷(Volume)将数据持久化到主机。使用 Docker 部署 MySQL 简单高效,适合开发、测试和生产环境。对于复杂场景(如多容器应用),推荐使用 Docker Compose。对于复杂场景,推荐使用 Docker Compose 管理多容器应用。确保已安装 Docker,并启动 Docker 服务。通过挂载卷和配置文件,可实现数据持久化和自定义配置。:容器内 MySQL 数据存储路径。:主机上的目录路径(需提前创建)。命令启动 MySQL 容器。),可以挂载配置文件到容器。

2303_80864208的博客 4900

SpringBoot 系列教程(二):SpringBoot使用Devtools实现热部署

1.devtools   spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。 2.项目搭建   本文是采用IDEA搭建的Spring Boot应用,通过spring-boot-devtools配置,可以支持修改java文件会自动重启程序,一些资源无需触发重启,...

Thinkingcao的专栏 1215

vue3:html2canvas+jspdf将页面以A4导出为PDF文件,解决内容截断+在分页处截断问题详细排查和解决教程(jsPDF + html2canvas A4分页截断、内容分页时存在截断)

html2canvas + jsPDF 解决内容截断问题,vue3 jspdf-html2canvas生成多页pdf防截断处理(包含代码),vue3解决html2canvas + jsPDF导出pdf分页内容截断问题,jsPDF + html2canvas A4分页截断 完美解决方案(含代码 + 案例),html页面导出pdf截断问题,html2canvas 与 jspdf 相结合生成 pdf 内容被截断的终极解决方案,提供html2canvas+jsPDF将HTML页面以A4纸方式导出为PDF后,内容分页

✅ 精选推荐文章 2245

Docker 部署 Mysql

通过上述步骤,你可以在 Docker 中快速部署和运行一个 MySQL 容器。根据你的需求,你还可以进一步配置和优化你的 MySQL 部署。

Hellc007的博客 1201

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

docker部署mysql详解

一般mysql容器的数据文件在var/lib/mysql下 my.cnf可使用下例文件,也可以拷贝其他配置文件,配置文件路径一定要设置正确。mkdir -p /opt/mysql/conf 保存docker容器内mysql配置文件。mkdir -p /opt/mysql/data 保存docker容器内mysql数据文件。mkdir -p /home/mysql/mysql-files 不加载启动报错。(docker start mysql)以容器名启动mysql容器。

m0_66961861的博客 1647

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

完整的docker+springboot+mysql部署

docker+springboot+mysql部署 网上文章多如牛毛,但在参照做时,多少遇到坑,故记一次完整的于此!我使用的是centos7。 1、准备阶段 a)安装docker b)安装mysql c)springboot打包与Dockerfile 2、开始部署 a)jar、Dockerfile文件 b)运行mysql并连接navicat c)运行项目 安装docker 下载d...

eriz程序之路 1万+

【Docker快速入门】Docker部署MySQL

要想让Docker帮我们安装和部署软件,肯定要保证你的机器上有Docker. 由于大家的操作系统各不相同,安装方式也不同。为了便于大家学习,我们统一在CentOS的虚拟机中安装Docker,统一学习环境。 注意:使用MacBook的同学也请利用 VMwareFusion来安装虚拟机,并在虚拟机中学习Docker使用。 安装方式参考文档:《安装Docker》 1.1.部署MySQL 首先,我们利用Docker来安装一个MySQL软件,大家可以对比一下之前传统的安装方式,看看哪个效率更高一些。

鱼干的博客 3062

【docker】docker-compose部署mysql

这里需要给MySQL做点自定义的配置,比如时区字符编码等。将文件上传到系统/data/docker上。如果需要停止容器或者重启容器的话。

m0_74824802的博客 3313

【实战练习】|在虚拟机中部署docker,在docker中部署mysql

摘要:本文介绍在CentOS7虚拟机中使用Docker部署MySQL的完整流程。首先解释Docker核心概念(镜像、容器、仓库)及其关系,然后提供Docker安装指引及网络问题解决方案。重点展示通过docker run命令部署MySQL 8.0容器的完整参数配置,包括环境变量设置、端口映射和字符集配置。最后给出容器管理命令和MySQL测试流程,包含数据库连接、建表及CRUD操作示例,特别强调SQL操作中的WHERE条件安全注意事项。附带相关配置问题参考链接。

2301_79553590的博客 730

docker 上部署 mysql

第一步 查看 docker状态 systemctl status docker 第二步 从镜像库里查找 mysql docker search mysql 官方版本 ,默认最新 第三步拉取镜像 docker pull mysql 第四步 下载成功 第五步查看镜像 第六步 创建...

无名小辈 689
上一篇: Selenium 模拟浏览器 爬虫 禁止加载图片 和 css
下一篇: Apache nifi demo 实验
FormatFa
博客等级 码龄11年 91粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值