1

我在我的 Webapp 中不断收到以下错误

OperationalError: (_mysql_exceptions.OperationalError) (1045, "Access denied for user 'dbadmin'@'xx.xx.xx.x' (using password: YES)")

MySQL Azure:

  • 托管在地区 > 法国中部
  • 允许访问 Azure 服务
  • 通过 Azure 门户使用用户名“dbadmin”和服务器“jetbase”创建

SQLAlchemy db_uri 看起来像这样

mysql://dbadmin@jetbase:'mysecretpassword'@jetbase.mysql.database.azure.com:3306/jetdb

网络应用程序

也在法国中部举办

在我的开发计算机上本地运行时,相同的 docker 映像可以访问数据库(我在 Security 下的客户端 IP 地址中手动添加了 ip。)

有人可以帮我调试吗?

4

2 回答 2

1

根据提供的信息,我可以给出 2 个想法:

  • Web 应用程序客户端中数据库 URL 的编码。我们的 PG 实例有类似的 DB url 语法(用户名中带有“@”)。在我们的服务器中,我们将其替换为“%40”以使其正常工作。
  • 您的网络服务器 IP 不允许使用帐户 dbadmin(可能 IP 不是静态的,也可能不是您想到的,这实际上取决于您的 Web 应用程序的托管)。我想你已经仔细检查过了。

如果您愿意,我们可以在 StationF 一起尝试调试

于 2019-08-02T08:11:54.667 回答
0

奇怪的是,我的密码有一个感叹号“!” 结果它没有被正确解析,我一直收到错误'Access denied for user@XX.XX.XX.XX (Password = yes)

我将它切换为“*”,现在它工作正常。

我还必须从 db_uri 中删除密码周围的单引号

mysql://dbadmin@jetbase:mysecretpasswordwithoutquotes@jetbase.mysql.database.azure.com:3306/jetdb

Ps:奇怪的是,同一个 docker 容器在我的计算机上本地运行时,密码包含!,工作正常。它也适用于 MySQL 工作台,但在 Azure 中的应用服务 (webapp) 中失败。我猜 Azure App 服务对 db_uri 进行编码并弄乱了“!” 在密码

于 2019-08-09T10:52:55.120 回答