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

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的结合使用有所帮助!


http://www.kler.cn/a/591545.html

相关文章:

  • 【STM32】从新建一个工程开始:STM32 新建工程的详细步骤
  • vue:组件的使用
  • Asp.net Core API 本地化
  • 淘宝/天猫获得淘宝商品评论 API 返回值说明
  • 基于Netty实现高性能HTTP反向代理
  • 春秋云境刷题1
  • 使用OBS进行webRTC推流参考
  • Spring Boot 启动顺序
  • 矩阵分解和线性方程组求解算法介绍
  • 游戏引擎 Unity - Unity 顶部菜单栏(文件、编辑、资源、游戏对象、组件、服务、窗口、帮助)
  • 如何通过Python实现自动化任务:从入门到实践
  • ubuntu24.04安装VMware Tools
  • hadoop集群配置-rsync命令同步文件夹
  • 分享一个项目中遇到的一个算法题
  • SSH反向隧道
  • flutter 专题 七十七 Flutter 数字增加动画
  • MySQL 8主从复制配置最佳实践
  • 2025蓝桥杯JAVA编程题练习Day6
  • Linux的root用户 、用户组
  • Cursor与Blender-MCP生成3D模型