首页 > 解决方案 > MySQL远程连接需要超过3分钟才能显示结果

问题描述

我正在尝试使用mysql命令从本地服务器连接到远程服务器...

长时间延迟后的结果:

[root@local ~] mysqlshow -u test -p*** -h XXX.XXX.XXX.XXX
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 0

(连接是通过我的第二个远程服务器完成的,没有任何错误或延迟)

更新 1

connect_timeout=500添加到远程服务器的/etc/my.cnf后重试从本地服务器连接:

[root@local ~] time mysqlshow -u test -p*** -h XXX.XXX.XXX.XXX
+---------------------+
|      Databases      |
+---------------------+
| foo                 |
| bar                 |
+---------------------+

real    3m21.174s  <======== (3m!)
user    0m0.004s
sys     0m0.015s

连接成功,但显示结果延迟超过 3 分钟!

有趣的是,当连接建立后,其他mysql请求(例如mysql> SELECT)立即生效!

更新 2

添加skip-host-cacheskip-name-resolve远程服务器的/etc/my.cnf ...

更新 3

通过我的第二个远程服务器的相同请求:(一切似乎都很好)

[root@remote2 ~] time mysqlshow -u test -p*** -h XXX.XXX.XXX.XXX
+---------------------+
|      Databases      |
+---------------------+
| foo                 |
| bar                 |
+---------------------+

real    0m0.016s  <======== (0.016s)
user    0m0.007s
sys     0m0.002s

更新 4

从本地服务器检查 MySQL 连接telnet:(一切似乎都很好!)

[root@local ~] time echo X | telnet -e X XXX.XXX.XXX.XXX 3306
Telnet escape character is 'X'.
Trying XXX.XXX.XXX.XXX...
Connected to XXX.XXX.XXX.XXX.
Escape character is 'X'.

telnet> Connection closed.

real    0m0.136s  <======== (0.136s)
user    0m0.000s
sys     0m0.005s

更新 5

尝试mysqli从本地服务器通过 PHP 连接:

<?php
$servername = "XXX.XXX.XXX.XXX";
$username = "test";
$password = "***";
$dbname = "dbname";

$conn = new mysqli( $servername, $username, $password, $dbname );

if( $conn->connect_error ) {
    die($conn->connect_error);
}
?>

结果:

Warning: mysqli::__construct(): (HY000/2002): Permission denied in /var/www/html/test.php on line 7
Permission denied

(PHP mysqli 连接是通过第二个远程服务器完成的,没有任何错误或延迟)

更新 6

Retry with disabledSELinux在本地服务器上解决了 PHP 连接错误,但连接仍然需要 3 分钟以上!

建立连接后,其他请求(例如SELECT)立即生效。

更新 7

尝试从本地服务器连接后,在服务器的 phpMyAdmin(或mysqladmin proc命令)上,使用未经身份验证的用户添加了新连接...

在此处输入图像描述

更新 8

XAMPP在 Windows(从不同的 PC 和网络)上尝试连接到远程服务器:

相同的结果(与未经身份验证的用户连接并延迟超过 3 分钟才能显示结果)...

我快要疯了!!

标签: mysqlmariadbcentos7

解决方案


推荐阅读