GreatSQL社区

搜索

vatebur

Docker安装MySQL及备份

热度 1vatebur 已有 94 次阅读2025-8-19 14:41 |个人分类:MySQL学习|系统分类:运维实战

Docker安装MySQL及备份

文章首发vate个人博客,转载至greatsql社区。转载需标明出处,禁止未经授权转载。

MySQL容器创建

  1. 现在推荐MySQL8.4 LTSC版本
  2. docker compose 文件现在不需要version声明了

docker compose 文件

services:  mysql-db:    # 指定容器的名称    container_name: mysql       # 指定镜像和版本    image: mysql:8.0                   ports:      - "3306:3306"    restart: always    # 容器日志大小配置    logging:      driver: 'json-file'      options:        max-size: '5g'    environment:      # 配置root密码      MYSQL_ROOT_PASSWORD: PASSWORD    volumes:      # 挂载数据目录      - "./data:/var/lib/mysql"       # 挂载配置文件目录      - "./config:/etc/mysql/conf.d"  

MySQL 用户权限

因为要从容器外面连入,所以MySQL用户的host不能为localhost。

权限不推荐照搬,建议最小权限原则,只提供需要的权限就好

-- 登入容器docker exec -it mysql mysql -u username -p CREATE USER 'user1'@'%' IDENTIFIED BY 'password'; ALTER USER 'user1'@'%' IDENTIFIED BY 'password'; -- 授予备份权限-- GRANT PROCESS ON *.* TO `user1`@`%`;-- 刷新权限FLUSH PRIVILEGES;-- 权限太大不建议使用:--- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;-- 如果已存在其他 host 的 root 用户,可以复制权限-- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' AS 'root'@'localhost'; 

MySQL数据导入

如果有需要,要提前创建数据库

<code class="language-hljs language-livecodeserver livecodeserver">-- 登入容器docker exec -it mysql_container_name mysql -u username -p mysql> create database database_name

注入数据

docker exec -i mysql mysql -uroot -p'PASSWORD'  database_name < ./data.sql

MySQL数据备份

用 crontab 创建定时计划

# crontab -e0 6 * * * /usr/bin/docker exec mysql mysqldump -uroot -p'PASSWORD' --no-tablespaces database_name > "/mysqlbk/$(date +\%Y\%m\%d_\%H\%M\%S).sql"

根据官方文档说明,如果命令带--no-tablespaces 就不需要使用PROCESS 权限

https://dev.mysql.com/doc/refman/8.4/en/mysqldump.html

mysqldump requires at least the SELECT privilege for dumped tables, SHOW VIEW for dumped views, TRIGGER for dumped triggers, LOCK TABLES if the --single-transaction option is not used, PROCESS if the --no-tablespaces option is not used, and the RELOAD or FLUSH_TABLES privilege with --single-transaction if both gtid_mode=ON and gtid_purged=ON|AUTO. Certain options might require other privileges as noted in the option descriptions.



发表评论 评论 (1 个评论)

回复 heshaoyou 2025-8-25 17:12
学习了

facelist

您需要登录后才可以评论 登录 | 立即注册

合作电话:010-64087828

社区邮箱:greatsql@greatdb.com

社区公众号
社区小助手
QQ群
GMT+8, 2025-8-29 03:03 , Processed in 0.015010 second(s), 11 queries , Redis On.
返回顶部