Ubuntu 22.04 (WSL2 )使用 Docker 安装 MySQL

Ubuntu 22.04 (WSL2 )使用 Docker 安装 MySQL

MySQL 是一个广泛使用的开源关系型数据库管理系统。本文将指导你在 WSL2 的 Ubuntu 22.04 环境下通过 Docker 和 Docker Compose 安装和配置 MySQL 8.4.5。

环境准备

  • 操作系统: WSL2 Ubuntu 22.04
  • 前提条件: 已安装 Docker 和 Docker Compose

安装步骤

1. 创建 MySQL 数据和日志目录

为 MySQL 创建持久化存储数据和日志的目录,并设置适当的权限。

# 创建数据和日志目录,`-p` 确保父目录不存在时自动创建。
mkdir -p /home/mysql/data /home/mysql/log
# 递归设置目录权限为 777,确保 MySQL 容器有读写权限。
chmod -R 777 /home/mysql/*

2. 创建 Docker Compose 配置文件

创建并编辑 docker-compose.yml 文件,用于定义 MySQL 服务的配置。

sudo touch /home/mysql/docker-compose.yml
sudo chmod 644 /home/mysql/docker-compose.yml

docker-compose.yml 内容如下,包含详细的参数注释:

services:
  mysql:
    image: mysql:8.4.5                         # 使用 MySQL 8.4.5 官方镜像
    container_name: mysql8                     # 容器名称,方便管理和识别
    restart: unless-stopped                   # 除非手动停止,否则容器自动重启
    environment:
      MYSQL_ROOT_PASSWORD: your_root_password # 设置 MySQL root 用户密码
      MYSQL_USER: your_user_name              # 创建普通用户
      MYSQL_PASSWORD: your_password           # 设置普通用户密码
      TZ: Asia/Shanghai                       # 设置容器时区为上海
    ports:
      - "3306:3306"                           # 映射 MySQL 默认端口到宿主机
    volumes:
      - /home/mysql/data:/var/lib/mysql       # 挂载数据目录,持久化数据库文件
      - /home/mysql/log:/var/log/mysql        # 挂载日志目录,存储错误日志等
      - /home/mysql/custom.cnf:/etc/mysql/conf.d/custom.cnf  # 挂载自定义配置文件
    # command: ["mysqld", "--verbose", "--help"]  # 可选:调试启动命令,生产环境建议注释

3. 创建 MySQL 自定义配置文件

创建 custom.cnf 文件,用于自定义 MySQL 配置。

sudo touch /home/mysql/custom.cnf
sudo chmod 644 /home/mysql/custom.cnf

custom.cnf 内容如下,包含详细的参数注释:

[mysqld]
# 服务器唯一 ID,用于主从复制
server-id = 1
# 监听所有网卡,允许远程连接
bind-address = 0.0.0.0
# 表名不区分大小写,兼容 Windows
lower_case_table_names = 1
# 指定 socket 文件路径
socket = /var/run/mysqld/mysqld.sock
# 最大连接数,视内存调整
max_connections = 200
# 单用户最大连接数
max_user_connections = 100
# 空闲连接超时时间(秒)
wait_timeout = 28800
# 交互连接超时时间(秒)
interactive_timeout = 28800
# 错误日志文件路径
log-error = /var/log/mysql/error.log
# 关闭通用查询日志,生产环境推荐
general_log = OFF
# 通用日志文件路径
general_log_file = /var/log/mysql/general.log
# 开启慢查询日志
slow_query_log = ON
# 慢查询日志文件路径
slow_query_log_file = /var/log/mysql/slow.log
# 慢查询阈值(秒)
long_query_time = 2
# 默认字符集,支持 emoji
character-set-server = utf8mb4
# 默认排序规则
collation-server = utf8mb4_unicode_ci
# 设置数据库时区为东八区
default_time_zone = '+08:00'

4. 启动 MySQL 容器

使用 Docker Compose 启动 MySQL 服务。

docker compose -f /home/mysql/docker-compose.yml up -d
  • docker compose: 调用 Docker Compose 命令。
  • -f /home/mysql/docker-compose.yml: 指定 Compose 配置文件路径。
  • up -d: 后台启动并运行服务。

5. 检查容器日志

查看 MySQL 容器日志,确认启动是否成功。

# 显示名为 `mysql8` 的容器日志,检查是否有错误
docker logs -f mysql8

6. 验证 MySQL 安装

方法 1:通过容器内 MySQL 客户端验证

进入容器并登录 MySQL。

docker exec -it mysql8 mysql -u root -p
  • docker exec -it mysql8: 进入名为 mysql8 的容器,-it 表示交互模式。
  • mysql -u root -p: 使用 root 用户登录 MySQL,输入 your_root_password

登录后,运行以下命令验证:

SHOW DATABASES;
SELECT USER, HOST FROM mysql.user;

预期输出应包含默认数据库(如 mysql, information_schema)和配置的用户(如 your_user_name)。

方法 2:通过外部 MySQL 客户端验证

在宿主机或另一台机器上安装 MySQL 客户端(如 mysql 命令行工具),然后连接:

mysql -h 127.0.0.1 -u your_user_name -p

输入 your_password 后,运行以下命令:

CREATE DATABASE test_db;
SHOW DATABASES;

如果能成功创建数据库并看到 test_db,说明 MySQL 配置正确。

方法 3:通过 GUI 工具验证

使用工具如 DBeaver 或 MySQL Workbench,配置连接参数:

  • 主机:127.0.0.1
  • 端口:3306
  • 用户名:your_user_name
  • 密码:your_password

连接成功后,可视化浏览数据库和表。

7. 管理 MySQL 容器

  • 查看容器状态:
    docker ps
    
  • 停止服务:
    docker compose -f /home/mysql/docker-compose.yml down
    
  • 重新启动服务:
    docker compose -f /home/mysql/docker-compose.yml up -d
    
  • 删除容器和数据(谨慎操作):
    docker compose -f /home/mysql/docker-compose.yml down -v
    

注意事项

  • 权限问题: 确保 /home/mysql/data/home/mysql/log 目录权限正确,避免容器无法写入。
  • 密码安全: MYSQL_ROOT_PASSWORDMYSQL_PASSWORD 建议使用强密码,至少 8 位,包含字母、数字和特殊字符。
  • 远程访问: bind-address = 0.0.0.0 允许远程连接,生产环境建议配置防火墙或限制访问 IP。
  • 日志管理: 慢查询日志和错误日志会占用磁盘空间,定期清理或调整配置(如关闭 general_log)。
  • 版本选择: 本文使用 mysql:8.4.5,可根据需要替换为其他版本,查看 MySQL Docker Hub 获取最新标签。

总结

通过以上步骤,你已在 WSL2 Ubuntu 22.04 上成功部署了 MySQL 8.4.5。使用 Docker Compose 简化了配置管理,自定义 custom.cnf 文件提供了灵活的数据库优化选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值