docker之安装mysql教程
作者:java阿杜
这篇文章主要介绍了docker之安装mysql教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
docker安装mysql
在平常的开发工作中,我们经常需要用到 mysql 数据库。那么在docker容器中,应该怎么安装mysql数据库呢。
简单来说:
- 第一步:拉取镜像;
- 第二步:创建挂载目录并设置 my.conf;
- 第三步:启动容器,第四步:测试连接
1:拉取镜像:docker pull mysql:版本
选择合适的mysql版本,如 拉取8.0.33版本:docker pull mysql:8.0.33,如果拉取镜像拉取不成功,那么可以修改宿主机 Docker 的配置文件 /etc/docker/daemon.json,修改镜像加速器配置。拉取成功后,可以通过 docker images mysql 命令查看:
2:创建挂载目录 并 配置 my.conf
1)创建挂载目录:
mkdir -p /docker/mysql/conf mkdir -p /docker/mysql/data mkdir -p /docker/mysql/log
2)创建 my.conf 并配置内容:在 conf 文件夹 下新建 my.conf 文件,配置内容如下:
[client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] # 设置东八区时区 default-time_zone = '+8:00' # 设置密码验证规则 authentication_policy=mysql_native_password # 限制导入和导出的数据目录 # 为空,不限制导入到处的数据目录 # 指定目录,必须从该目录导入到处,且MySQL不会自动创建该目录 # 为NULL,禁止导入与导出功能 secure_file_priv=/var/lib/mysql init_connect='SET collation_connection = utf8mb4_general_ci' init_connect='SET NAMES utf8mb4' character-set-server=utf8mb4 collation-server=utf8mb4_general_ci skip-character-set-client-handshake sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION' skip-name-resolve max_connections=1000 # lower_case_table_names=1 skip-log-bin
3:启动容器
1) docker run:
docker run --name mysql-8.0.33 \ -e MYSQL_ROOT_PASSWORD=your_password \ -e MYSQL_CHARSET=utf8mb4 \ -e MYSQL_COLLATION=utf8mb4_unicode_ci \ -p 3306:3306 \ -v /docker/mysql:/var/lib/mysql \ -d mysql:8.0.33
命令解释:
- a:--name mysql-8.0.33:设置容器名称
- b:-e MYSQL_ROOT_PASSWORD=your_password:设置root用户密码
- c:-e MYSQL_CHARSET=utf8mb4:为 MySQL 数据库设置字符集为 utf8mb4
- d:-e MYSQL_COLLATION=utf8mb4_unicode_ci:数据库设置排序规则为 utf8mb4_unicode_ci
- e:-p 3306:3306:-p 用于将容器内部的端口映射到主机的端口,将宿主机3306端口映射到容器3306端口
- f:-v /docker/mysql:/var/lib/mysql:v 是挂载选项,用于将主机上的目录挂载到容器内部的目录,实现数据的持久化存储。
- g:/data/mysql:/var/lib/mysql 表示将主机上的 /data/mysql 目录挂载到容器内的 /var/lib/mysql 目录,这样容器内 MySQL 数据库的数据会存储在主机的 /data/mysql 目录中,即使容器被删除,数据也不会丢失。
- h:-d mysql:8.0.33:表示以守护进程模式运行容器,即容器将在后台运行。Docker 将从 Docker Hub 或本地镜像仓库拉取该镜像,如果不存在,则会先拉取再运行。
2)docker-compose.yml,命令 docker compose up -d mysql
version: '1' services: mysql: image: mysql:8.0.33 restart: always container_name: mysql environment: MYSQL_ROOT_PASSWORD: your_password TZ: Asia/Shanghai ports: - "3306:3306" volumes: - /docker/mysql/log:/var/log/mysql - /docker/mysql/data:/var/lib/mysql - /docker/mysql/conf:/etc/mysql/conf.d command: --max_connections=1000 --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci privileged: true network_mode: "host"
启动完成后,可以使用 docker ps 命令查看当前容器启动状态,可以 使用 docker logs 容器id 或者 docker logs mysql 查看启动日志。
4:测试
使用数据连接客户端工具测试。
总结
以上为 docker 下 部署 mysql 数据库的基本步骤,希望能给大家一个参考,也希望大家多多支持脚本之家。