【技术】Docker 部署 MySQL

Docker 部署 MySQL

Docker 安装

如果已经安装了 Docker 跳过此步骤。如果没有安装 Docker 可以参考我的另一篇文章Ubuntu 安装 Docker。也可以参考Docker 官网文档安装。

MySQL 部署

不废话,直接上命令,罗列几个场景。

不挂载宿主机目录

数据、日志、配置都在容器内部。

bash 复制代码
docker run -d \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:latest \
--lower_case_table_names=1

参数解释:

  • --name mysql:给容器起个名字,方便后续管理。
  • -e :运行环境变量配置。
    • MYSQL_ROOT_PASSWORD=123456:通过环境变量设置 root 用户的密码(必填,否则容器启动失败)。
  • -d:后台运行。
  • mysql:latest:使用的镜像和标签。
  • --lower_case_table_names=1:配置MySQL不区分大小写。

数据配置持久化

数据、日志、配置挂载在宿主机,方便查看修改。
注意权限:将数据、日志、配置的文件夹的所有者和组修改为 999

bash 复制代码
sudo chown -R 999:999 /data/mysql/data /data/mysql/conf /data/mysql/logs

因为 MySQL 官方 Docker 镜像里,MySQL 服务是以一个名叫 mysql 的系统用户来运行的,而这个用户的 UID 和 GID 在镜像中被硬编码为 999。

当你把宿主机的一个目录(比如 /data/mysql/data)挂载到容器里,如果这个目录的所有者不是 999,容器内的 mysql 用户就没有权限在里面读写文件,MySQL 会启动失败,报类似 Permission denied 的错误。

所以我们需要提前在宿主机上,把这个目录的所有者改成 999,这样容器里的 mysql 用户才能顺畅使用它。

bash 复制代码
docker run -d \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf:/etc/mysql/conf.d \
-v /data/mysql/logs:/var/log/mysql \
mysql:latest \
--lower_case_table_names=1

参数解释:

  • -v:目录挂载,将容器内部的目录映射到宿主机。参数格式为:宿主机地址:容器内部地址。挂载的目的是方便用户在宿主机上直接操作文件,文件的修改会和容器内部同步。
相关推荐
SilentSamsara31 分钟前
高并发 API 压测与调优:locust + 火焰图 + 瓶颈定位
开发语言·python·青少年编程·docker·中间件
Flash.kkl37 分钟前
C++基于websocketpp的多用户网页五子棋项目
开发语言·网络·数据库·c++·websocket·mysql
kong@react39 分钟前
milvus(向量数据库)docker容器(升级1.0)
数据库·docker·milvus
开发者联盟league40 分钟前
docker登录失败解决方法。http: server gave HTTP response to HTTPS client
http·docker·https
quqi9942 分钟前
为什么电脑不亮灯(by quqi99)
docker·samba
qq_4523962342 分钟前
第十八篇:《Docker 监控与性能优化》
docker·容器·性能优化
Albert Edison1 小时前
【Docker】镜像仓库(Registry)
运维·docker·容器
梦梦代码精1 小时前
从源码到上线:实测开源电商系统的技术选型与部署落地
docker·开源
呆萌的代Ma2 小时前
解决docker网络问题,通过GitHub Actions打包dockerfile
docker·容器·github
小此方2 小时前
Re:Mysql数据库基础篇(一):CentOS/Linux 环境下的完整安装/运行/登录Mysql流程与首次登录异常处理
linux·数据库·mysql