Skip to main content

Docker 部署 MySQL 数据库

MySQL 是一种开源关系型数据库管理系统,支持大多数 SQL 标准。它是最流行的关系型数据库之一,广泛用于建立 Web 应用程序后端。

MySQL 允许用户创建、查询、更新和删除数据库中的数据。它还支持事务,允许用户回滚或提交对数据库的修改。

MySQL 支持大量数据类型,包括常见的数值、字符串和日期类型。它也支持存储过程和触发器,使用户能够在数据库中编写复杂的逻辑。

MySQL 可以在多种操作系统上运行,包括 Linux、Windows 和 macOS。它可以通过多种编程语言(如 Python、Java 和 PHP)连接,并且可以使用多种数据库管理工具(如 MySQL Workbench)来管理数据库。

DockerHub: mysql | DockerHub

Docker-Compose

stack.yml
version: "3.1"

services:
mysql:
image: mysql:5.7
container_name: "some-mysql"
# NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password
# (this is just an example, not intended to be a production configuration)
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: database_name
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
volumes:
- ./mysql-data:/var/lib/mysql
ports:
- "3306:3306"

adminer:
image: adminer
restart: always
ports:
- 8080:8080

运行 docker-compose -f stack.yml up 启动服务,访问 http://localhost:8080 或者 http://host-ip:8080 进入管理页面。

常用命令:

  • 启动: docker-compose -f stack.yml up
  • 后台启动: docker-compose -f stack.yml up -d
  • 检查状态: docker-compose ps
  • 停止: docker-compose -f stack.yml stop
  • 停止并删除: docker-compose -f stack.yml down
  • 查看日志: docker logs some-mysql

Docker

$ docker run -itd --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -v /my/own/datadir:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
  • some-mysql 容器名称
  • my-secret-pw 设置的 root 用户的密码
  • -p 是指定 宿主端口:容器内服务端口,默认 3306
  • -v 设置数据库文件的映射,把宿主机上的目录 /my/own/datadir 与容器内的 /var/lib/mysql 作关联关系