官方文档: mysql docker安装文档
dockerFile:mysql:5.7.29
说明
在常见的Java Web项目中,业务数据都需要存储在关系型数据库中。当前比较主流的关系型数据库包含mysql、oracle等,本文记录通过 docker 快速搭建 mysql 5.7 数据库的过程。
一. 镜像获取
通过docker hub
官方搜索并选择合适的镜像版本,我们这里使用 mysql:5.7.29
版本
docker pull mysql:5.7.29
二. 容器创建
1、映射目录分配
根据dockerFile中的VOLUME
设置,映射规划如下:
/devops/mysql/data:/var/lib/mysql
/devops/mysql/conf:/etc/mysql/conf.d
2、端口映射规划
mysql 容器默认对外服务端口为 3306
,devops
体系中的映射规划如下:
3306:3306
3、容器创建
目录创建脚本
mkdir -p /devops/mysql/conf /devops/mysql/data
容器创建脚本 (不执行)
docker run -d --name mysql --restart always \
-p 3306:3306 \
-v /devops/mysql/data:/var/lib/mysql \
-v /devops/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=Passw0rd \
mysql:5.7.29
三. devops 添加 mysql
根据容器创建规划,mysql
的docker-compose
语法模板如下,添加到devops
的docker-compose.yml
文件中即可。
mysql:
container_name: mysql
image: mysql:5.7.29
restart: always
ports:
- "3306:3306"
volumes:
- "./mysql/data:/var/lib/mysql/"
- "./mysql/conf:/etc/mysql/conf.d"
environment:
MYSQL_ROOT_PASSWORD: Passw0rd
注意:MYSQL_ROOT_PASSWORD
为 mysql 的 root 密码,大家可以根据需要自行修改
四. 上传配置文件
查看docker版本mysql 5.7.29
的配置文件存放规则,我们发现/etc/mysql/conf.d/
目录下的文件会在mysql启动时被作为配置文件加载。那么,当我们需要人为调整mysql配置文件时,可以将本地编辑好的配置文件存放在它的映射目录/devops/mysql/conf
下。
为了解决MySQL客户端或服务端中文编码不一致问题,我们在mysql.cnf
配置文件中设置中文编码使用utf8mb4
。并通过sftp
命令将mysql.cnf
、mysqldump.cnf
、docker.cnf
三个配置文件上传到映射目录
启动容器,检查数据库默认的中文编码,如下图所示:
注意:我们将/etc/mysql/conf.d
映射到宿主机目录后,mysql将不再默认生成配置文件,这里我们需要先将配置文件重新上传到映射目录,再启动docker-compose
创建容器。
配置文件存放目录: https://gitee.com/tysite/devops/tree/master/mysql/conf
五. 创建 tysitedb 库
完成 docker mysql 5.7.29的安装后,我们可以创建自己的SCHEMA
供开发环境使用。
这里以 tysitedb
为例,创建SCHEMA并授权给tysite
用户。
1、进入mysql容器
docker exec -it mysql /bin/bash
2、登录mysql
使用root
用户登录mysql,密码为MYSQL_ROOT_PASSWORD
设置的内容。
mysql -u root -p
3、创建 SCHEMA
CREATE SCHEMA `tysitedb` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
4、创建用户 tysite (密码自行调整)
CREATE USER 'tysite'@'%' identified by '******';
5、授权
grant all privileges on tysitedb.* to 'tysite'@'%' with grant option;
flush privileges;
创建数据库完成后,可以通过workbanch连接验证数据库访问。(workbanch安装请点这里)