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
✅ 脚本功能:
- 自动备份所有数据库
- 压缩备份文件节省空间
- 自动删除旧备份文件
- 备份成功/失败状态提示
使用方法:
- 将脚本保存为 mysql_backup.sh
- 给脚本执行权限:chmod +x mysql_backup.sh
- 手动执行:./mysql_backup.sh
- 设置定时任务:crontab -e 添加 0 2 * * * /path/to/mysql_backup.sh