【实战】如何在Docker Image中轻松运行MySQL
  AKkeQImze2Ed 2023年12月22日 31 0

【实战】如何在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
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

推荐阅读
AKkeQImze2Ed