Python Flask在';它在另一台服务器上

Python Flask在';它在另一台服务器上,python,mysql,flask,sqlalchemy,Python,Mysql,Flask,Sqlalchemy,我正在尝试将我的Flask应用程序设置为与托管在不同服务器上的数据库一起工作。我的整个设置工作正常,如果我尝试使用一个简单的PyMysql脚本,我将能够连接到数据库,但是当我尝试从Flask执行此操作时,我会遇到任何类型的问题 我将数据库配置保持在config.py上: SQLALCHEMY\u数据库\u URI='mysql+pymysql://user:pass@外部ip/mydb' 但每当我尝试执行查询时,都会出现以下错误: SELECT command denied to user 'u

我正在尝试将我的Flask应用程序设置为与托管在不同服务器上的数据库一起工作。我的整个设置工作正常,如果我尝试使用一个简单的PyMysql脚本,我将能够连接到数据库,但是当我尝试从Flask执行此操作时,我会遇到任何类型的问题

我将数据库配置保持在config.py上:

SQLALCHEMY\u数据库\u URI='mysql+pymysql://user:pass@外部ip/mydb
'

但每当我尝试执行查询时,都会出现以下错误:

SELECT command denied to user 'user'@'local_ip'
出于某种原因,flask正在本地查找db,尽管我将其设置为指向外部服务器。有人能帮我吗

在同一环境中,以下内容将连接并允许我进行查询:

connection = pymysql.connect(host='external_ip', user='user', password='pass', db='mydb', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)

此错误看起来更像是db服务器错误,而不是本地flask客户端错误

如果是由于无法连接到mysql服务器而导致的本地错误,您应该得到如下结果:

  • 无法连接到服务器
  • 无法访问主机名
  • 连接被拒绝(例如,如果您使用错误的端口访问服务器)
阅读此错误时,我猜您已到达服务器,但对于该用户+IP+数据库组合,您没有读取权限


有关更多详细信息,请参阅文档

谢谢您的回答。你能看看我的编辑吗?我尝试从完全相同的环境中使用PyMysql进行连接,它连接到“相同的环境”您是指“相同的服务器”?在这种情况下,我认为“localhost”是mysql作为请求源IP的默认值。e、 g.“用户”@“本地主机”。如果要授予对所有IP的访问权限,则应在mysql服务器“user”@“%”上授予此权限(当然,在生产环境中,最好为应用程序服务器的确切IP授予权限)。如果您还没有,请查看GRANT文档,以更好地了解mysql内部的情况;-)是的,但我不明白的是,为什么我添加的pymysql脚本可以访问数据库,而flask是在同一台服务器上的,而所有东西都是一样的?用户也是一样的,唯一的变化是我第一次使用flask进行查询,第二次使用两行python脚本使用PyMysql访问dbAt时,我不知道这一点。至少,尝试确定这是mysql权限问题,尝试关闭服务器,然后检查错误是否更改。如果是这样,则意味着问题实际上在服务器端。然后试着去做“展示助学金”,然后试着去理解为什么你会被阻止。最后一次尝试时,您可以尝试查看mysql访问日志,并尝试了解请求被阻止的原因