返回目录

Docker 部署MySQL笔记

Docker MySQL运行配置与数据库操作指南

Docker MySQL运行配置

Docker 运行命令

docker run -p 3306:3306 --name mysql -v /home/service/mysql/logs:/logs -v /home/service/mysql/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

命令参数说明:

  • docker run:启动一个新的 Docker 容器
  • -p 3306:3306:端口映射,将宿主机的3306端口映射到容器的3306端口
  • --name mysql:将容器命名为 mysql
  • -v /home/service/mysql/logs:/logs:挂载日志目录
  • -v /home/service/mysql/data:/mysql_data:挂载数据目录
  • -e MYSQL_ROOT_PASSWORD=123456:设置MySQL root用户密码
  • -d mysql:5.7:后台运行MySQL 5.7镜像
💡 Docker登录命令:
  • 进入容器命令:docker exec -it mysql bash
  • MySQL密码:123456
  • 登录MySQL:mysql -u root -p

创建MySQL用户

创建新用户并授权

CREATE USER 'admin'@'%' IDENTIFIED BY '123456'; GRANT ALL ON *.* TO 'admin'@'%'; FLUSH PRIVILEGES;

命令说明:

  • CREATE USER 'admin'@'%':创建名为admin的用户,允许从任何主机连接
  • IDENTIFIED BY '123456':设置用户密码
  • admin'@'%':设置 MySQL 远程访问属性
  • GRANT ALL ON . TO 'admin'@'%';:授予所有数据库和表的所有权限
  • FLUSH PRIVILEGES:刷新权限,使修改生效

MySQL数据库操作

⚠️ 注意: 必须先登录到MySQL中(mysql -u root -p),所有操作都在MySQL提示符下进行,每个命令以分号结束。

基础操作命令

操作 命令 说明
显示数据库列表 show databases; 查看所有数据库
显示数据表 use mysql;
show tables;
打开mysql库并显示表
显示表结构 describe 表名; 查看表结构
创建数据库 create database 库名; 创建新数据库
创建表 use 库名;
create table 表名(字段设定列表);
在指定库中创建表
删除数据库 drop database 库名; 删除数据库
删除表 drop table 表名; 删除表
清空表记录 delete from 表名; 删除表中所有记录
显示表记录 select * from 表名; 查看表中所有数据

编码设置(避免数据存储和读取时出现乱码问题)

📝 编码修改:
  • 修改整个MySQL编码:启动时加入 --default-character-set=utf8mb4
  • 修改特定库编码:alter database db_name default character set utf8mb4;

自动备份脚本

mysqldump 自动备份脚本

#!/bin/bash #配置参数 CONTAINER_NAME="mysql" MYSQL_USER="admin" MYSQL_PASSWORD="123456" # MySQL密码 BACKUP_DIR="/home/mysql_backup_file" # 宿主机备份目录 MAX_BACKUPS=7 # 保留的备份天数 #创建备份目录(如果不存在) mkdir -p "$BACKUP_DIR" #生成备份文件名(按日期) BACKUP_FILE="$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).sql.gz" #使用mysqldump备份并压缩 docker exec $CONTAINER_NAME mysqldump \ -u$MYSQL_USER -p"$MYSQL_PASSWORD" \ --all-databases \ --single-transaction \ --routines \ --triggers \ --events | gzip > "$BACKUP_FILE" #检查备份是否成功 if [ $? -eq 0 ]; then echo "✅ MySQL备份成功: $BACKUP_FILE" else echo "❌ 备份失败! 请检查错误日志" exit 1 fi #删除旧备份(保留最近MAX_BACKUPS份) find "$BACKUP_DIR" -name "backup_*.sql.gz" -type f | sort -r | tail -n +$(($MAX_BACKUPS + 1)) | xargs rm -f
✅ 脚本功能:
  • 自动备份所有数据库
  • 压缩备份文件节省空间
  • 自动删除旧备份文件
  • 备份成功/失败状态提示

使用方法:

  1. 将脚本保存为 mysql_backup.sh
  2. 给脚本执行权限:chmod +x mysql_backup.sh
  3. 手动执行:./mysql_backup.sh
  4. 设置定时任务:crontab -e 添加 0 2 * * * /path/to/mysql_backup.sh