最小权限、逻辑备份与 PITR
可运行 SQL
仅在本地实验实例执行,并替换实验密码:
sql
CREATE USER 'course_reader'@'localhost'
IDENTIFIED BY 'replace-this-lab-password';
GRANT SELECT ON mysql_course.* TO 'course_reader'@'localhost';
SHOW GRANTS FOR 'course_reader'@'localhost';
SELECT @@log_bin, @@binlog_format, @@binlog_expire_logs_seconds;
SHOW BINARY LOG STATUS;逻辑备份与恢复命令在 shell 运行:
bash
mysqldump --single-transaction --routines --events --triggers \
--databases mysql_course > mysql_course.sql
mysql < mysql_course.sql机制解释
账户由 user 与 host 共同标识。权限应授予完成任务所需的最小对象和动作,应用迁移、运行、备份和监控账户应分离。
InnoDB 一致性逻辑备份常用 single-transaction 获取一致性快照,但长备份会保留旧版本;非事务表、DDL 并发、存储过程和账户等对象需要单独确认。PITR 以有效全量备份为起点,再重放目标区间 binlog。
真实边界
- 不把密码写进仓库、命令历史或备份文件名;使用安全凭据通道。
- 备份必须加密、限制访问、校验完整性并验证保留策略。
- 恢复目标必须是新实例,避免覆盖唯一可用副本。
- RPO 是最多可丢数据量,RTO 是恢复时间;两者要通过演练证明。
练习
- 验证 course_reader 能查不能改。
- 完成备份,在新实例恢复并比较表、行数和关键汇总。
- 记录一次业务更新前后的 binlog 位置,规划恢复到更新前。
验收清单
- 只读账户的正例和越权负例都已运行并保存结果。
- 备份恢复到新实例,schema、精确行数和关键汇总通过校验。
- PITR 报告记录起点、目标点、重放范围、RPO、RTO 和回切。
深度加餐:备份没有演练就只是大型幻觉
最小权限防止误操作,备份与 PITR 负责灾难恢复;两者都要通过一次真实恢复证明。
先做一个可观察实验
sql
CREATE USER 'report_reader'@'10.%' IDENTIFIED BY 'rotate-me';
GRANT SELECT ON billing.* TO 'report_reader'@'10.%';
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'report_reader'@'10.%';
SHOW GRANTS FOR 'report_reader'@'10.%';预期:报表账号只能读取 billing;SHOW GRANTS 是权限基线,密码和来源网段仍应由 secret 管理。
原理下潜与工程边界
物理备份恢复整库速度快,逻辑备份便于迁移;PITR 需要基线备份加连续 binlog,并明确时间点、时区和一致性边界。恢复目标包含 RTO、RPO 与数据校验。
只备份主库不等于备份成功;binlog 保留周期不足会断链;恢复到临时实例后还要检查字符集、账户、事件和外部依赖。
反例排错路线
每次备份记录 GTID/文件位置、开始结束时间、校验和与恢复测试结果;权限异常时先 SHOW GRANTS,再查角色继承和默认权限。
练习加码(仍不提供答案)
加码:设计“误删后恢复到删除前一分钟”的演练脚本,包含隔离恢复实例、binlog 应用、校验与切换证据。
验收时请补充:一份可复现的环境/数据前提、正常结果、失败结果以及可回滚或清理动作。
继续查阅:MySQL 8.4 参考手册(外部资料已收录于证据账本) · InnoDB 文档(外部资料已收录于证据账本)