如何使用 docker 搭建一个 mysql 服务

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/
目录前言1. 编写 docker-compose.yml 文件2. 定义测试数据3. 定义启动文件4. 启停 mysql

前言

在日常开发中,数据库 mysql 是必不可少的,但是由于其繁琐的配置,安装 mysql 时总是不太顺利,还可能会踩坑。所以本文的目的,可以让你快速搭建一个 mysql 服务。

下面跟着以下教程,可以让你快速、流畅的安装 mysql 数据库,流程可分成 4 步。

如何使用 docker 搭建一个 mysql 服务插图

1. 编写 docker-compose.yml 文件

创建 docker-compose.yml 文件,文件内容如下:

version: 3.1 services: mysql: image: mysql:8 restart: always # https://stackoverflow.com/a/49021165/7756877,使用默认的授权插件, # mysql 8 默认使用 caching_sha2_password 作为授权插件,并非 mysql_native_password, # 然而 mysql 驱动还不支持 caching_sha2_password,为了往后兼容所以要加这一行。 command: –default-authentication-plugin=mysql_native_password ports: – “7306:3306” volumes: – “./table.sql:/docker-entrypoint-initdb.d/01-init-table.sql” environment: MYSQL_ROOT_PASSWORD: mysql # root 用户的密码 MYSQL_DATABASE: lingmo # 默认创建 lingmo 数据库 MYSQL_USER: kele # 新建一个用户 MYSQL_PASSWORD: baishi2020 # 新建用户的密码

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

docker-compose 的 services 属性中定义的一个 mysql

image 表明镜像版本是 mysql:8command 通过参数 –default-authentication-plugin 定义了一个默认插件 mysql_native_password, 原因是: mysql 8 默认使用 caching_sha2_password 作为授权插件,并非 mysql_native_password,然而 mysql 驱动还不支持 caching_sha2_password,为了往后兼容所以要加这一行。port 表明使用本地的 7306 端口映射容器中 mysql 的 3306 端口。volumes 表明将 ./table.sql 文件挂载到容器的 docker-entrypoint-initdb.d/01-init-table.sql 文件中,而存在容器中 docker-entrypoint-initdb.d/ 目录中的文件,在 mysql 第一次启动时会执行,之后重启容器不会重复执行。environmentMYSQL_ROOT_PASSWORD: 创建 mysql 服务时会新建一个 root 用户,这个属性定义的是 root 用户密码。MYSQL_DATABASE: 默认创建一个 lingmo 的数据库。MYSQL_USER: 再次创建一个用户,用户名是 kele。MYSQL_PASSWORD: 表明 kele 用户的密码,这里是 baishi2020。

2. 定义测试数据

新建测试数据表 table.sql ,目的是在 mysql 启动时初始化数据。

DROP TABLE IF EXISTS `students`; CREATE TABLE `students` ( `student_id` varchar(255) NOT NULL, `student_name` varchar(255), `sex` tinyint(1) DEFAULT NULL, PRIMARY KEY (`student_id`) ) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4; INSERT INTO `students`(`student_id`, `student_name`, `sex`) VALUES(1, jake, 0), (2, jenery, 1);

以上表示新建一张 students 表,然后插入两条数据。

3. 定义启动文件

新建启动文件 set-env.sh, 通过 docker-compose 启动 mysql 容器服务;然后通过 souce set-env.sh 把 mysql-local-dev 设置到环境变量中去。

#!/bin/bash MYSQL_LOCAL_ENV_DIR=”$( cd “$(dirname “$0″)”; pwd -P )” function mysql-local-dev() { case $1 in “up”) docker-compose -p lingmo -f “$MYSQL_LOCAL_ENV_DIR”/docker-compose.yml up -d ;; “down”) docker-compose -p lingmo -f “$MYSQL_LOCAL_ENV_DIR”/docker-compose.yml down ;; *) echo mysql-local-dev [up | down] esac }

启动 mysql 的三个文件已定义完成,目录结构为以下:

➜ local-mysql git:(main) ✗ tree . . ├── docker-compose.yml ├── set-env.sh └── table.sql 0 directories, 3 files

最后,我们测试下是否可启动 mysql。

4. 启停 mysql

启动 mysql mysql-local-dev up

说明 mysql 启动成功。

如何使用 docker 搭建一个 mysql 服务插图1

通过相应的账号、密码登录 mysql 即可。

停止 mysql mysql-local-dev down
免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容