使用MySQL Workbench导入SQL到RDS时遇‘pwd未定义’异常求助
解决MySQL Workbench迁移到RDS时的
UnboundLocalError与1045权限问题 首先得明确:你遇到的local variable 'pwd' referenced before assignment错误,本质是MySQL Workbench的Python脚本内部bug,而触发这个bug的根源是RDS的访问权限验证失败(也就是日志里的ERROR 1045 (28000): Access denied)。虽然你能手动连接RDS操作,但迁移模块的连接逻辑可能触发了权限限制,进而引发了脚本的变量未定义问题。
下面是具体的解决步骤:
1. 先排查RDS的权限与访问限制
虽然你能手动操作,但迁移时的连接可能遇到了更严格的限制:
- 检查用户的主机权限:日志里显示
admin@'<your_ip>.skybroadband.com'被拒绝,你可以登录RDS后,执行以下命令修改用户的主机范围:ALTER USER 'admin'@'<your_ip>.skybroadband.com' IDENTIFIED BY 'your_password'; -- 或者直接允许所有主机(测试用,生产环境不建议) ALTER USER 'admin'@'%' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES; - 确认迁移所需权限:确保
admin用户拥有CREATE、ALTER、INSERT、DROP等完整的数据库权限,迁移过程需要创建Schema、导入数据,权限不足也会触发1045错误。
2. 绕过Workbench的bug:用命令行直接导入SQL dump
既然已经导出了SQL文件,直接用MySQL命令行工具导入是最快捷的方式,完全避开Workbench的脚本问题:
打开终端(Windows用CMD或PowerShell),执行:
mysql -h <你的RDS实例端点> -u admin -p < 你的导出文件.sql
执行后输入密码即可,这个方式更稳定,也能看到更清晰的导入日志。
3. 修复Workbench的脚本(可选)
如果你坚持要用Workbench的迁移功能,可以手动修复这个Python脚本的bug:
- 找到文件路径:
C:\Program Files\MySQL\MySQL Workbench 8.0 CE\modules\wb_admin_export.py - 打开文件,定位到
get_mysql_password函数(大概在960行左右),在if pwd is None:这一行之前,添加一行初始化代码:pwd = None - 保存文件后重启Workbench,再尝试迁移。
不过注意:修改系统自带的脚本有风险,最好先备份原文件,或者直接升级MySQL Workbench到最新版本——这个bug在后续的Workbench更新中已经被修复了。
内容的提问来源于stack exchange,提问作者Jossy
相关产品推荐
相关产品推荐

