当前位置: 首页 > news >正文

Docker和 Docker Compose安装MySQL:快速搭建数据库环境

在现代软件开发中,MySQL是最流行的关系型数据库之一,而Docker和 Docker Compose则是容器化技术的代表工具。将两者结合,可以快速、便捷地搭建一个隔离的MySQL数据库环境,非常适合开发、测试和学习。本文将详细介绍如何使用 Docker和Docker Compose安装和运行 MySQL。

1 Docker和 Docker Compose安装MySQL的原因

  • 快速部署:无需手动安装和配置MySQL,只需一条命令即可启动
  • 环境隔离:MySQL运行在独立的容器中,不会影响主机环境
  • 版本管理:可以轻松切换不同版本的MySQL
  • 便携性:Docker镜像可以在任何支持Docker的平台上运行
  • 易于清理:测试完成后,可以轻松删除容器,不留痕迹
  • 多容器管理:使用Docker Compose可以轻松管理多个容器(如 MySQL + PHP + Nginx)

2 安装Docker和Docker Compose

2.1 Docker安装

请参考:Docker入门指南:1分钟搞定安装 + 常用命令,轻松入门容器化!-CSDN博客

2.2 Docker Compose安装

请参考:【docker compose入门指南】安装与常用命令参数全解析,助你入门compose!-CSDN博客

 3 拉取MySQL镜像

[root@node3 ~]# docker pull mysql:5.7.43
5.7.43: Pulling from library/mysql
9ad776bc3934: Downloading  5.933MB
9ad776bc3934: Downloading  12.93MB
9ad776bc3934: Downloading   20.5MB
9ad776bc3934: Downloading  33.98MB
9ad776bc3934: Downloading  43.19MB
9ad776bc3934: Pull complete 
9e4eda42c982: Pull complete 
df6d882cf587: Pull complete 
6c804e92b324: Pull complete 
fd54ada0c48d: Pull complete 
4ed8fb20ac8d: Pull complete 
eec2b1bc5454: Pull complete 
41c3423057b7: Pull complete 
122b2c7b16c0: Extracting  45.68MB
122b2c7b16c0: Pull complete 
0d30e03d70e3: Pull complete 
71c43898e898: Pull complete 
Digest: sha256:4f9bfb0f7dd97739ceedb546b381534bb11e9b4abf013d6ad9ae6473fed66099
Status: Downloaded newer image for mysql:5.7.43
docker.io/library/mysql:5.7.43
[root@node3 ~]# 

4 Docker Compose安装MySQL

4.1 创建目录以及自定义文件

[root@node3 mysql]# mkdir -p /project/mysql/config
[root@node3 mysql]# mkdir -p /project/mysql/data
[root@node3 mysql]# touch /project/mysql/config/my.cnf
[root@node3 mysql]# touch /project/mysql/docker-compose.yml
[root@node3 mysql]# tree /project/mysql
/project/mysql
├── config
│   └── my.cnf
├── data
└── docker-compose.yml

2 directories, 2 files
[root@node3 mysql]# 

说明:
config/my.cnf:自定义MySQL配置文件
data/:用于持久化MySQL数据目录

4.2 配置自定义MySQL文件

vim /project/mysql/config/my.cnf 
# 编辑MySQL自定义配置文件,并添加如下简单内容

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
max_connections = 1000
innodb_buffer_pool_size = 1G

[client]
default-character-set = utf8mb4

4.3 配置docker-compose.yml文件

vim /project/mysql/docker-compose.yml
# 编辑docker-compose.yml并添加如下内容

version: '2.33'
services:
  mysql:
    image: mysql:5.7.43
    container_name: mysql5.7.43
    environment:
      MYSQL_ROOT_PASSWORD: lahmy1c@
      MYSQL_DATABASE: mydb
      MYSQL_USER: mydbuser
      MYSQL_PASSWORD: lahmy1c@
    ports:
      - "13306:3306"
    volumes:
      - ./data:/var/lib/mysql
      - ./config/my.cnf:/etc/mysql/conf.d/my.cnf
    restart: always

 参数说明:

  • image:使用的MySQL镜像(5.7.43)
  • container_name:容器名称
  • environment:设置MySQL的环境变量,包括root密码、数据库名称、用户和密码
  • ports:将主机的13306端口映射到容器的3306端口
  • volumes:
       1)./data:/var/lib/mysql:将MySQL数据目录挂载到主机上的data目录,以实现数据持久化
       2)./config/my.cnf:/etc/mysql/conf.d/my.cnf:将自定义配置文件挂载到容器中
  • restart:设置容器总是重启(即使主机重启)

4.4 启动MySQL容器

[root@node3 mysql]# docker-compose up -d
WARN[0000] /project/mysql/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 
[+] Running 2/2
 ✔ Network mysql_default  Created                                                                                                                                           1.4s 
 ✔ Container mysql5.7.43  Started                                                                                                                                           1.9s 
[root@node3 mysql]# 

参数说明:
-d:表示后台运行容器

4.5 验证MySQL是否运行

[root@node3 mysql]# docker-compose ps
WARN[0000] /project/mysql/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 
NAME          IMAGE          COMMAND                  SERVICE   CREATED              STATUS              PORTS
mysql5.7.43   mysql:5.7.43   "docker-entrypoint.s…"   mysql     About a minute ago   Up About a minute   33060/tcp, 0.0.0.0:13306->3306/tcp, [::]:13306->3306/tcp
[root@node3 mysql]# 

5 连接使用MySQL

5.1 安装MySQL客户端

yum install mysql -y

5.2 命令行连接MySQL

mysql -h 127.0.0.1 -P13306 -u root -p

[root@node3 mysql]# mysql -h 127.0.0.1 -P13306 -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.43 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 
MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

MySQL [(none)]> 

5.3 容器内连接使用MySQL

docker exec -it mysql5.7.43 mysql -u root -p

[root@node3 mysql]# docker exec -it mysql5.7.43 mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.43 MySQL Community Server (GPL)

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

5.4 验证自定义配置是否生效

# 执行如下命令简单验证和4.2章节自定义配置是否一致

mysql> SHOW VARIABLES LIKE 'character_set_server';
SHOW VARIABLES LIKE 'max_connections';+----------------------+---------+
| Variable_name        | Value   |
+----------------------+---------+
| character_set_server | utf8mb4 |
+----------------------+---------+
1 row in set (0.01 sec)

mysql> SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 1000  |
+-----------------+-------+
1 row in set (0.01 sec)

mysql> 

6 常用操作

6.1 查看日志

docker-compose logs mysql

6.2 停止容器

docker-compose down

6.3 启动容器

docker-compose up -d

6.4 删除容器和数据卷

docker-compose down -v

7 总结

通过Docker和Docker Compose安装MySQL,并支持自定义配置文件(my.cnf),可以极大地简化数据库环境的搭建和管理。无论是测试还是学习,Docker Compose都能为你提供一个干净、隔离的环境,并支持个性化配置。希望能对你快速上手 Docker Compose和MySQL的结合使用有所帮助!

相关文章:

  • 编程题-第k个语法符号
  • 《P4387 【深基15.习9】验证栈序列》
  • 一分钟了解深度学习
  • 统计数字字符个数(信息学奥赛一本通-1129)
  • 2025-03-16 学习记录--C/C++-PTA 练习4-10 找出最小值
  • java学习总结(八):Spring boot
  • 海洋难抵极:尼莫点
  • LabVIEW生成EXE文件错误提示
  • 计算机基础:二进制基础12,十进制数转换为十六进制
  • AtCoder Beginner Contest 397(ABCDE)
  • 加固脱壳技术:DEX动态加载对抗
  • #pragma omp critical解析
  • 【YOLOv8】YOLOv8改进系列(7)----替换主干网络之LSKNet
  • 深入分析 Shell 中 IFS、数组赋值与输出行为
  • apk反编译修改教程系列-----修改apk应用 缩小体积 精简apk【三十六】
  • JAVA课程实验报告单(12)---数据库系统设计
  • 内存管理:
  • ESP32_蓝牙音响
  • HTTPS建立连接过程
  • 深度学习中的向量的样子-DCN
  • 第三届“老山国际春茶节”活动在云南麻栗坡举办
  • 4月金融数据前瞻:受去年低基数因素影响,社融增量有望同比大幅多增
  • 纪念|古文字学泰斗裘锡圭:“还有很多事情要做”
  • 七大交响乐团“神仙斗法”,时代交响在上海奏出时代新声
  • 顾家家居:拟定增募资近20亿元,用于家居产品生产线的改造和扩建等
  • 中国海警依法驱离日非法进入我钓鱼岛领海船只