在不同的计算机上运行时,sqlalchemy连接相同的凭据被拒绝

时间:2014-09-05 20:05:51

标签: python mysql linux windows sqlalchemy

我有一个对我来说似乎不可能的问题,这意味着我从根本上误解了某些事情。我使用flask(python库)编写了一个简单的API。除其他外,此api连接到在远程Web服务器上运行的mysql服务器。我正在使用sqlalchemy库来执行此连接。

连接字符串非常简单。它看起来像这样:

    db =create_engine('mysql+mysqlconnector://{user}:{password}@{host}:{port}/{database}'.format(user=Constants.Sql.USER, password=Constants.Sql.PASS, host=Constants.Sql.HOST, port=Constants.Sql.PORT, database=Constants.Sql.DATABASE))
    connection = db.connect()

在我的开发机器上,一切正常。但是,当我将api部署到不同的远程计算机时,它不起作用。我收到错误:

sqlalchemy.exc.ProgrammingError: (ProgrammingError) 1045 (28000): Access denied for user 'user'@'domain' (using password: YES) None None

这对我没有任何意义,因为它使用完全相同的凭据(它们是硬编码的)。

工作环境是一台Windows机器,抛出错误的环境是ubuntu 14.04。 windows和ubuntu机器都远程运行数据库所在的Web服务器,因此它不会成为一些奇怪的localhost事件。

我对此感到非常难过。如果有人能给我一些建议,我真的很感激!

1 个答案:

答案 0 :(得分:1)

也许数据库只接受来自特定IP地址的连接。这可以解释为什么相同的用户名和密码会在一个用户名和密码上成功而在另一个上失败。

GRANT包含IP地址信息:

http://dev.mysql.com/doc/refman/5.1/en/adding-users.html