MySQL cli 客户端在连接到 Azure 托管数据库时挂起

MySQL cli client hangs when connecting to Azure managed database

我在 Azure 上有一个 MySQL 数据库,使用 Azure 托管数据库服务,在同一 VNET 中有两个 Ubuntu 20.04 VM(运行 PHP 应用程序) . 我可以从 PHP 和远程 GUI 客户端 (SequelPro) 连接到数据库, 所以我确信防火墙配置正确并且我正在使用正确的细节。

但是,当我尝试在任一虚拟机上使用 mysql CLI 客户端进行连接时,它只是挂起而没有输出。我在两个虚拟机上都试过了,我得到了相同的行为。

我使用的命令是:

mysql -u "username@hostname" -p -h "ip_address" -P 3306 database_name -e "SHOW TABLES"

它提示输入密码,所以我输入了...然后什么也没有。在 top,mysql 进程消耗了 100% 的 CPU。

我可以在 IP 地址上远程登录端口 3306,我得到了通常的乱码要求 mysql_native_password。

如果我将 username@hostname 的主机名部分更改为无效的主机名,则会显示“找不到服务器名”。然而,如果我输入无效的用户名(或无效的密码),它仍然会挂起。所以我猜这与试图解析该名称的 Azure 托管数据库服务的 gateway 部分有关。直到几天前一切正常。

任何日志中都没有任何内容,屏幕上也没有任何输出,所以我不知道从哪里开始尝试解决这个问题。

这似乎是由于 https://bugs.mysql.com/bug.php?id=105288 假设您的客户端是 8.0.27,我今天遇到了同样的问题。