定义
使用Docker运行MySQL有许多优势。它允许数据库程序和数据分离,增强了数据的安全性和可靠性。Docker Image的轻便性简化了MySQL的部署和迁移,而Docker的资源隔离功能确保了应用程序之间无冲突。结合中间件和容器化系统,Docker为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