使用Docker安装部署MySQL数据库

简介: 使用Docker安装部署MySQL数据库

Docker是我们常用的容器引擎,使用Docker来部署和管理我们的常用数据库例如MySQL是非常的方便的。不过使用Docker安装部署MySQL还是有一些需要注意的地方的。

1,拉取MySQL镜像

使用docker pull命令即可拉取:

docker pull mysql

2,创建数据卷

MySQL作为数据库,其中通常存放我们的用户数据,都是很重要的,因此在容器化部署MySQL时,将MySQL的数据文件等等持久化是非常有必要的。

这里我们使用具名挂载的方式挂载MySQL容器的数据卷,方便管理。

先创建三个数据卷,分别用于挂载并持久化MySQL的数据文件配置文件日志这三个目录:

docker volume create mysql-data
docker volume create mysql-config
docker volume create mysql-log

这样,我们就创建了三个数据卷,这三个数据卷分别被命名为mysql-datamysql-configmysql-log,大家也可以自行取名。

3,创建MySQL容器

通过以下命令创建MySQL容器:

docker run -id--name=mysql -v mysql-config:/etc/mysql/conf.d -v mysql-log:/logs -v mysql-data:/var/lib/mysql -p3306:3306 -eMYSQL_ROOT_PASSWORD=123456-eLANG=C.UTF-8 mysql

这样,就完成了MySQL容器的创建和启动,上述命令的参数意义如下:

  • -id 将MySQL容器挂在后台运行
  • --name=mysql 将容器起名为mysql,大家可以自己起名,该参数可以省略
  • -v mysql-config:/etc/mysql/conf.d 把MySQL容器中的配置文件目录挂载至上述创建的名为mysql-config的数据卷上面,还有两个-v挂载数据卷的参数同理
  • -p 3306:3306 把容器的3306端口映射到宿主机的3306端口,这样才能从外网访问这台机器上的MySQL,若你的数据库只需要从本机访问,就可以去除这个参数
  • -e MYSQL_ROOT_PASSWORD=123456 设置容器环境变量MYSQL_ROOT_PASSWORD的值为123456,这个环境变量表示MySQL的root用户的密码,一定要设置,这里设置了密码为123456,大家可以自定义
  • -e LANG=C.UTF-8 设置容器的语言环境变量LANG值为C.UTF-8,这个必须要设置,否则容器内默认是英文环境,使得MySQL无法存放中文内容

4,修改MySQL配置文件

上述我们已经把创建了数据卷并具名挂载了容器内的MySQL配置目录,只需查看数据卷的位置并修改其中文件即可。

查看数据卷mysql-config的位置:

docker volume inspect mysql-config

网络异常,图片无法展示
|

进入这个目录,可以看到里面有两个默认的MySQL配置文件,使用vim编辑即可,在里面加入自定义的配置。

网络异常,图片无法展示
|

编辑完成记得重启容器:

# 上述创建时容器名为mysql,若为自定义此处换为自己的docker restart mysql

5,第一次添加用户或者设置外网访问

创建完成容器之后,我们可以先进入这个MySQL容器,并使用root用户连接,创建用户等等。

先进入容器的shell:

docker exec -it mysql bash

这时终端就变成了容器内的终端,使用下列命令即可连接MySQL:

mysql -u root -p

密码就是上述创建容器时你设置的MYSQL_ROOT_PASSWORD容器环境变量的值。

至于配置文件和用户添加等等常用操作这里不再赘述了,可以直接参考这篇博客的修改配置文件添加用户等等部分:传送门

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
数据可视化 BI API
无缝对接云数据库:自定义报表生成工具在混合云环境下的部署指南
自定义报表生成工具通过拖拽设计、多数据源整合及自动化输出,帮助业务人员零代码创建个性化报表,解决传统工具灵活性不足、技术门槛高的问题。文章对比其与传统报表差异,列举行业应用场景(如财务、零售),并给出选型建议与主流工具(如FineReport、Power BI、板栗看板)的优劣势分析。
436 0
|
10月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
934 6
|
10月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
1248 4
|
关系型数据库 MySQL 数据库
【赵渝强老师】数据库不适合Docker容器化部署的原因
本文介绍了在Docker中部署MySQL数据库并实现数据持久化的方法,同时分析了数据库不适合容器化的原因。通过具体步骤演示如何拉取镜像、创建持久化目录及启动容器,确保数据安全存储。然而,由于数据安全性、硬件资源争用、网络带宽限制及额外隔离层等问题,数据库服务并不完全适合Docker容器化部署。文中还提到数据库一旦部署通常无需频繁升级,与Docker易于重构和重新部署的特点不符。
651 19
【赵渝强老师】数据库不适合Docker容器化部署的原因
|
12月前
|
关系型数据库 MySQL 数据库
为什么 MySQL 不推荐用 Docker 部署?
本文探讨了MySQL是否适合容器化的问题,分析了Docker容器在数据安全、性能瓶颈、状态管理及资源隔离等方面的挑战,并指出目前主流分布式数据库如TDSQL和OceanBase仍倾向于部署在物理机或KVM上。
497 0
|
运维 Java Devops
阿里云云效操作报错合集之部署docker时遇到报错,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
运维 Kubernetes 前端开发
【云原生】阿里云服务器部署 Docker Swarm集群
阿里云服务器 一键部署 Docker Swarm 集群!
1225 0
【云原生】阿里云服务器部署 Docker Swarm集群