我有一个对我来说似乎不可能的问题,这意味着我从根本上误解了一些东西。我使用 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 服务器,所以它不可能是一些奇怪的本地主机。
我完全被这个难住了。如果有人能给我一些建议,我将不胜感激!
最佳答案
也许数据库只接受来自特定 IP 地址的连接。这可以解释为什么相同的用户名和密码会在一个上成功而在另一个上失败。
GRANT 包括 IP 地址信息。查看 MySQL 文档。或者本教程:
关于python - 在不同机器上运行时,sqlalchemy 连接相同的凭据被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25693234/