You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Shell脚本备份MySQL数据库时遭遇1045访问拒绝错误求助

解决MySQL备份脚本的1045访问拒绝问题

以下是针对性的解决步骤:

1. 统一用户名并补全localhost授权

错误提示显示的是user'@'localhost,但你的脚本变量DB_USER="myusername"、授权语句用的是myuser@'%',三者用户名不一致,且MySQL中@'%'和@'localhost'是两个独立身份,需统一并补全授权:

  • 将脚本里的DB_USER改为myuser,和授权用户名保持一致
  • 执行以下SQL补全localhost权限:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

2. 修复脚本变量引用问题

你的DB_NAME包含空格,直接传给mysqldump会被解析为多个参数,需用双引号包裹所有变量,避免解析错误:

mysqldump -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" | gzip > "$BACKUP_FILENAME"

3. 处理特殊密码(可选)

如果密码包含!、$、&等特殊字符,直接写在脚本里会被Shell解析,建议改用.my.cnf配置文件:
在/root/.my.cnf中添加:

[mysqldump]
user=myuser
password=你的数据库密码
host=localhost

然后给文件设置安全权限:

chmod 600 /root/.my.cnf

脚本里的mysqldump命令可简化为:

mysqldump "$DB_NAME" | gzip > "$BACKUP_FILENAME"

4. 手动测试验证

先执行手动命令确认连接正常:

mysqldump -h localhost -u myuser -p你的密码 "mydb name" > test.sql

能成功生成test.sql再放回脚本运行

内容的提问来源于stack exchange,提问作者boyenec

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:07:16