docker中mysql部署
本文最后更新于184 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

1、MySQL Docker 镜像拉取与部署

1.1 镜像拉取

1.1.1 从华为云拉取 MySQL 8.0 镜像
# 执行镜像拉取命令
docker pull swr.cn-east-3.myhuaweicloud.com/library/mysql:8.0

# 验证镜像是否拉取成功
docker images | grep mysql

1.2 环境准备

1.2.1 创建数据存储目录
# 创建数据存储和配置目录
sudo mkdir -p /host/mysql/data /host/mysql/conf /host/mysql/backup

# 设置正确的目录权限
sudo chmod -R 755 /host/mysql

1.3 容器部署

1.3.1 运行 MySQL 容器
docker run -d \
  --name mysql-server \
  -e MYSQL_RANDOM_ROOT_PASSWORD=yes \
  -e MYSQL_DATABASE=myapp \
  -e MYSQL_USER=xiaojiu \
  -e MYSQL_PASSWORD=admin@123 \
  -p 3306:3306 \
  -v /host/mysql/data:/var/lib/mysql \
  -v /host/mysql/conf:/etc/mysql/conf.d \
  swr.cn-east-3.myhuaweicloud.com/library/mysql:8.0
1.3.2 环境变量配置说明
  • MYSQL_RANDOM_ROOT_PASSWORD=yes:自动生成安全的随机 root 密码
  • MYSQL_DATABASE=myapp:创建默认数据库
  • MYSQL_USER=xiaojiu:创建应用用户
  • MYSQL_PASSWORD=admin@123:设置用户密码

1.4 状态验证

1.4.1 检查容器运行状态
# 查看容器运行状态
docker ps

# 查看容器详细信息
docker inspect mysql-server

# 监控容器日志
docker logs mysql-server

# 获取自动生成的 root 密码
docker logs mysql-server | grep "GENERATED ROOT PASSWORD"

1.5 数据库连接测试

1.5.1 连接到 MySQL 数据库
# 使用 root 用户连接(需要输入自动生成的密码)
docker exec -it mysql-server mysql -u root -p

# 使用创建的应用用户连接
docker exec -it mysql-server mysql -u xiaojiu -padmin@123 myapp
1.5.2 数据库基本操作
-- 显示所有数据库
SHOW DATABASES;

-- 使用 myapp 数据库
USE myapp;

-- 创建测试表
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 插入测试数据
INSERT INTO users (username, email) VALUES ('test_user', 'test@example.com');

-- 查询数据验证
SELECT * FROM users;

-- 查看用户权限
SHOW GRANTS FOR 'xiaojiu'@'%';

-- 退出 MySQL 客户端
EXIT;

1.6 镜像管理

1.6.1 镜像标签优化
# 为华为云镜像打上简化标签
docker tag swr.cn-east-3.myhuaweicloud.com/library/mysql:8.0 mysql:8.0

# 验证标签创建
docker images

# 使用简化标签运行测试容器
docker run -d --name mysql-test mysql:8.0

1.7 容器管理

1.7.1 日常维护命令
# 停止容器
docker stop mysql-server

# 启动容器
docker start mysql-server

# 重启容器
docker restart mysql-server

# 删除容器(谨慎操作)
docker rm -f mysql-server

# 进入容器内部
docker exec -it mysql-server bash

# 监控容器资源使用
docker stats mysql-server

1.8 数据管理

1.8.1 数据库备份操作
# 创建备份目录
sudo mkdir -p /host/mysql/backup

# 备份所有数据库
docker exec mysql-server mysqldump -u root -p[生成的密码] --all-databases > /host/mysql/backup/all_databases_$(date +%Y%m%d).sql

# 备份特定数据库
docker exec mysql-server mysqldump -u xiaojiu -padmin@123 myapp > /host/mysql/backup/myapp_backup.sql
1.8.2 数据库恢复操作
# 恢复数据库
docker exec -i mysql-server mysql -u root -p[生成的密码] < /host/mysql/backup/backup.sql

1.9 故障排查

1.9.1 常见问题解决方案
# 检查容器日志
docker logs mysql-server

# 权限问题修复
sudo chown -R 999:999 /host/mysql/data
sudo chmod -R 755 /host/mysql/data

# 验证目录权限
ls -la /host/mysql/

# 重新启动服务
docker start mysql-server

1.10 配置优化

1.10.1 自定义 MySQL 配置
# 创建自定义配置文件
sudo vi /host/mysql/conf/custom.cnf
1.10.2 配置文件示例
[mysqld]
# 字符集配置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

# 连接配置
max_connections=1000
wait_timeout=28800

# 性能优化
innodb_buffer_pool_size=256M

# 日志配置
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow.log
long_query_time=2

[client]

default-character-set=utf8mb4

1.11 网络连接验证

1.11.1 外部连接测试
# 安装 MySQL 客户端工具
sudo apt-get update && sudo apt-get install mysql-client -y

# 从宿主机连接测试
mysql -h 127.0.0.1 -P 3306 -u xiaojiu -padmin@123 myapp

# 查看容器网络信息
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mysql-server

现在您已经完成了从镜像拉取到 MySQL 容器完整部署的所有步骤!

文末附加内容

评论

  1. 7love
    Windows Edge
    6 月前
    2025-11-11 16:51:01

    nice

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇