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

【实战】如何在Docker Image中轻松运行MySQL

【实战】如何在Docker Image中轻松运行MySQL - 程序员古德

定义

使用Docker运行MySQL有许多优势。它允许数据库程序和数据分离,增强了数据的安全性和可靠性。Docker Image的轻便性简化了MySQL的部署和迁移,而Docker的资源隔离功能确保了应用程序之间无冲突。结合中间件和容器化系统,Docker为MySQL提供了自动伸缩和容灾能力。此外,版本管理和升级也变得简单易行。对于数据丢失不敏感的业务,数据库分片技术可提高系统吞吐量。

代码案例

【实战】如何在Docker Image中轻松运行MySQL - 程序员古德

第一种方式,适用于通常只想快速拥有一个mysql数据库环境,如下代码:

docker run -d --net=host --name=mysql8-server -e MYSQL_ROOT_PASSWORD=root mysql:8.0.35

其中-e MYSQL_ROOT_PASSWORD指定root账号的密码。

第二种方式,适用于通常只想快速拥有一个mysql数据库环境,但是又不想把root账号给出去,,如下代码:

docker run -d --net=host --name=mysql8-server -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=xxx_user -e MYSQL_PASSWORD=xxx_password -e MYSQL_DATABASE=xxx_db  mysql:8.0.35

其中-e MYSQL_ROOT_PASSWORD指定root账号的密码;-e MYSQL_USER=xxx_user指定一个新的用户,-e MYSQL_PASSWORD指定用户的密码,-e MYSQL_DATABASE指定这个新用户可以看到那个数据库。

第三种方式,适用于通常只想快速拥有一个mysql数据库环境,但是又不想把root账号给出去,但是又想指定数据库的一些参数信息,比如,字符集、排序规则等,,如下代码:

docker run -d --net=host --name=mysql8-server -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=xxx_user -e MYSQL_PASSWORD=xxx_password -e MYSQL_DATABASE=xxx_db -e TZ=Asia/Shanghai mysql:8.0.35 --character-set-server=utf8mb4 --collation-server=utf8mb4_0900_as_cs 

其中-e MYSQL_ROOT_PASSWORD指定root账号的密码;-e MYSQL_USER=xxx_user指定一个新的用户,-e MYSQL_PASSWORD指定用户的密码,-e MYSQL_DATABASE指定这个新用户可以看到那个数据库;-e TZ=Asia/Shanghai指定数据库时区,--character-set-server=utf8mb4 --collation-server=utf8mb4_0900_as_cs指定字符集和排序规则,注意如果需要指定数据库运行参数信息,则该信息必须得放在image的后面

第四种方式(推荐!推荐!),将数据库运行参数信息放到独立的文件中,比如,在my.cnf文件,在my.cnf文件中除了可以指定字符集、排序规则等参数,还可以在该文件中可以指定更多的参数,甚至可以实现主从、读写分离的配置,如下代码:

docker run -itd \
--net=host \
-v /data/docker/mysql8/data:/var/lib/mysql \
-v /data/docker/mysql8/logs:/var/log/mysql \
-v /data/docker/mysql8/my.cnf:/etc/mysql/conf.d/my.cnf \
-e MYSQL_ROOT_PASSWORD=root \
--privileged=true \
--name mysql8-server \
mysql:8.0.35

my.cnf参考案例

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[mysqld]
# 服务端口号 默认3306
port=3306
# 允许访问的IP网段
bind-address=0.0.0.0
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 数据库字符集对应一些排序等规则
collation-server = utf8mb4_0900_as_cs
http://www.lryc.cn/news/264117.html

相关文章:

  • PLC物联网,实现工厂设备数据采集
  • npm安装依赖报错ERESOLVE unable to resolve dependency tree(我是在taro项目中)(node、npm 版本问题)
  • Maven仓库上传jar和mvn命令汇总
  • Jenkins 执行远程脚本的插件—SSH2 Easy
  • Starting the Docker Engine...一直转圈
  • 关于Python里xlwings库对Excel表格的操作(十五)
  • [Linux] LVS+Keepalived高可用集群部署
  • 【版本管理】git stash用法
  • 声明式的理解【gpt】
  • 提高Spring Boot技能的9种方法
  • HIVE基本操作
  • 【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人
  • 【大数据面试】MapReduce常见问题与答案
  • 数组深入学习感悟
  • 亚马逊云科技-如何缩容/减小您的AWS EC2根卷大小-简明教程
  • [Java 基础] Java Stream
  • 达芬奇18.6DaVinci ResolveStudio(Win/Mac)激活版
  • 力扣题目学习笔记(OC + Swift)16. 最接近的三数之和
  • 基于STM32的DHT11温湿度传感器与LCD显示器的集成设计
  • 解决浏览器自动将http跳转至https导致无法访问的问题
  • 小程序面试题 | 07.精选小程序面试题
  • 深度学习的推理部分
  • 如何用 CleanMyMac 来保护 Mac 隐私
  • opencv入门到精通——鼠标事件和Trackbar控件的使用
  • iOS 收集 SDK 内部 log
  • 【CSS @property】CSS自定义属性说明与demo
  • 【华为数据之道学习笔记】6-3数据服务分类与建设规范
  • Vue的脚手架
  • Java实现Word中插入上标和下标
  • Java和Python中的目标堆栈规划实现