mysql - 如何使用 wordpress docker 镜像从 azure 应用程序服务连接到 mysql 的 azure 数据库?

标签 mysql wordpress azure docker azure-web-app-service

我有一个 azure 的应用程序服务,使用 latest wordpress image from docker hub 。 azure应用程序服务的屏幕截图: enter image description here

然后在azure应用程序服务->应用程序设置中,我添加了以下键/值对,这些键/值对将用于连接Azure数据库的mysql:

  1. WORDPRESS_DB_HOST
  2. WORDPRESS_DB_NAME
  3. WORDPRESS_DB_PASSSWORD
  4. WORDPRESS_DB_USER

截图: enter image description here

在我的 Azure mysql 数据库中,我已启用公共(public)访问/允许从任何 azure 服务进行公共(public)访问/还添加我的客户端 IP 和此 IP 范围 0.0.0.0 - 255.255.255.255。我可以从我的客户端访问它并创建将由 azure 应用程序服务使用的数据库。截图如下: enter image description here

在服务器参数中,我还关闭了 require_secure_transport 设置: enter image description here

最后,我尝试启动该网站,但它抛出错误“建立数据库连接时出错”,截图如下: enter image description here

我是 wordpress/docker 新手,不知道如何解决这个问题。我还查看了一些视频/文档,没有看到任何其他配置差异。您能指导我如何解决这个问题吗?非常感谢。

最佳答案

您收到此错误消息。

Warning: mysqli_real_connect(): (HY000/1045)>: Access denied for user 'ivan'@'52.xx.xxx.xx' (using password: YES)

这意味着 MySQL 已接收、处理并拒绝了您的 WordPress 实例的连接尝试。因此,您知道主机名是正确的,并且您的云提供商的防火墙设置允许您的 WordPress 实例与 MySQL 实例交换网络数据。

出了什么问题?

MySQL 的用户名/帐户名设置有一个怪癖。帐户名称可以类似于 'ivan'@'localhost''ivan'@'%'(甚至类似于 'ivan'@'192.0.0.0)。 22.33')。

其中第一个仅允许从本地主机登录(或通过 ssh 隧道)。第二个允许从 '%' 登录,即任何主机。您的 WordPress 实例需要第二个实例才能访问 MySQL。

当您从计算机登录 MySQL 时,请执行此操作。

SELECT host, user FROM mysql.user WHERE user='ivan';

您应该看到两行,如下所示

 host       user  
 ----       ---   
 %          ivan  
 localhost  ivan 

可能缺少'%'作为主机的帐户。如果是这样,这意味着您需要 create another MySQL account and give it access to your database 。像这样做。

CREATE USER 'ivan'@'%' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;

接下来,确保您刚刚创建的用户帐户(您的 WordPress 软件将使用该帐户连接到 MySQL)可以访问您的数据库。

GRANT ALL PRIVILEGES ON wordpress.* TO 'ivan'@'%';
FLUSH PRIVILEGES;

如果您仍然收到错误消息,则可能是您的 'ivan'@'%' 帐户密码与您在 WordPress 配置中输入的密码不匹配。您可以通过以下方式更改它:

ALTER USER 'ivan'@'%' IDENTIFIED BY 'your_password'; 
FLUSH PRIVILEGES;

如果仍然给出相同的错误消息,则您的云供应商可能需要 TLS 才能连接到 MySQL。您可能需要咨询他们的支持团队。

(这是设置新 WordPress 实例的常见障碍。)

关于mysql - 如何使用 wordpress docker 镜像从 azure 应用程序服务连接到 mysql 的 azure 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72455967/

相关文章:

mysql - 如何通过 JOIN 从另一个表中查找不存在的数据?

MySql REGEXP 运算符

php - 基于 PHP/JavaScript 的安全、可定制、开源聊天引擎,适用于所有流行的浏览器

wordpress - 在 woocommerce 中实现不受支持的 Paypal 货币的最佳方式

php - 无法使用 Microsoft 帐户登录

mysql - 如何在 MySQL 中返回数据透视表输出?

javascript - 来自未知来源的页面高度

html - 是否可以使用 CSS 定位 HTML(文本)? - 它显示为(文本)作为 ID

azure - 如何模拟 Azure blobContainerClient.GetBlobsAsync()

azure - 如何使用数组中的字段作为过滤器从 Cosmos DB 获取文档?