无法从Web应用程序连接到MYSQL Azure-1045,“拒绝用户'dbadmin'@'xx.xx.xx.x'的访问(使用密码:是)

时间:2019-07-31 08:27:54

标签: azure azure-web-app-service mysql-error-1045 azure-mysql-database

我在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

Web应用

也托管在France Central

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

有人可以帮我调试一下吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

这是奇怪的事情,我的密码带有感叹号'!'并发现它没有得到正确的解析,并且我不断收到错误消息:“对user@XX.XX.XX.XX的访问被拒绝(密码=是)

我将其切换为“ *”,现在可以正常使用了。

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

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

Ps:奇怪的是,运行时同一个Docker容器   在我的计算机上本地使用带有!的密码可以正常工作。   它也可以在MySQL工作台上工作,但只能从App中失败   Azure中的服务(webapp)。我猜Azure应用服务会编码db_uri   并弄乱了“!”在密码中