
SQLAlchemy迁移失败:MySQL远程连接正常,却提示权限不足?
问题:
使用SQLAlchemy进行MySQL数据库迁移时,出现权限不足错误:
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1045, "Access denied for user 'db_user'@'121.29.178.187' (using password: YES)")
奇怪的是,使用相同用户名和密码的远程命令行和Navicat客户端都能正常连接数据库,数据库用户db_user的host字段设置为'%',MySQL版本为8.0.2.6。
分析及解决方法:
虽然看起来密码正确,但问题很可能仍然出在密码或权限上。建议尝试以下步骤:
-
再次核实密码: 仔细检查在命令行、Navicat和SQLAlchemy连接配置中使用的密码是否完全一致,包括大小写。 复制粘贴时尤其要注意。
-
创建特定主机用户: 即使
host设置为%,也可能存在细微的权限差异。建议创建一个新的MySQL用户db_user@121.29.178.187,并明确赋予该用户所需的数据库权限。 -
检查MySQL配置: 如果以上步骤无效,则需要检查MySQL服务器端的配置,例如:
-
授权表: 检查MySQL的
mysql数据库中的user表,确保db_user用户的权限设置正确。 -
防火墙: 确认MySQL服务器的防火墙是否允许来自
121.29.178.187这个IP地址的连接。
-
授权表: 检查MySQL的
通过以上步骤,通常可以解决SQLAlchemy迁移过程中出现的权限不足问题。 如果问题仍然存在,请提供更多细节信息,例如MySQL服务器的配置、SQLAlchemy连接字符串等,以便进一步排查。










