mac终端备份mysql需用绝对路径调用mysqldump,推荐通过chmod 600的配置文件安全传参,执行含--single-transaction、--routines、--triggers的gzip压缩备份并验证有效性。

Mac终端备份MySQL数据库到本地,需绕过图形界面直接调用mysqldump命令,确保路径正确、凭证安全、输出可追溯——终端里敲错一个斜杠或漏掉一个引号,备份文件就可能为空或权限拒绝。
确认mysqldump是否可用并获取绝对路径
在终端输入 which mysqldump,若返回空行,说明系统找不到该命令。常见位置有 /usr/local/mysql/bin/mysqldump(官网安装)或 /opt/homebrew/bin/mysqldump(Homebrew安装)。不要依赖别名或shell函数,【crontab定时执行时只认绝对路径】。若未找到,需先将对应bin目录加入PATH,例如编辑 ~/.zshrc 添加 export PATH="/usr/local/mysql/bin:$PATH",再执行 source ~/.zshrc 生效。
安全传递数据库登录凭证
方法一:使用专用配置文件(推荐)
新建文件 ~/mysql-backup.cnf,内容严格如下(注意中括号顶格、换行不可省略):[client]user = rootpassword = your_actual_passwordhost = 127.0.0.1
立即执行 chmod 600 ~/mysql-backup.cnf,否则mysqldump会拒绝读取——这是硬性安全策略,不是警告。
方法二:临时交互式输入密码(仅限手动执行)
运行 mysqldump -u root -p mydb > mydb_$(date +%Y%m%d).sql,回车后终端会隐藏式提示输入密码。这种方式避免明文出现在历史命令中,但无法用于脚本或定时任务。
执行单库备份并生成带时间戳的压缩文件
第一步:创建备份存放目录mkdir -p ~/backups/mysql
第二步:运行完整备份命令/usr/local/mysql/bin/mysqldump --defaults-extra-file=~/mysql-backup.cnf --single-transaction --routines --triggers mydb | gzip > ~/backups/mysql/mydb_$(date +\%Y\%m\%d_\%H\%M).sql.gz
这里必须用 --single-transaction 保证InnoDB表一致性;--routines 和 --triggers 确保存储过程与触发器不丢失;时间戳中的 \% 要转义,否则bash会报错。
第三步:验证备份有效性
执行 gunzip -t ~/backups/mysql/mydb_$(date +\%Y\%m\%d)_*.sql.gz 检查压缩包是否损坏;再用 head -n 20 ~/backups/mysql/mydb_$(date +\%Y\%m\%d)_*.sql.gz | gunzip 看前20行是否含 CREATE TABLE 和 INSERT 语句——空文件或只有报错信息说明备份失败。











