Das mysql error.log zeigt
[Warning] Aborted connection 320935 to db: '...' user: '...' host: '...' (Got an error reading communication packets)
Während die Client-Seite bekommt:
Lost connection to MySQL server at 'reading initial communication packet', system error: 111
Lost connection to MySQL server at 'reading authorization packet', system error: 0
and after a while: Host '...' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
Ich habe das MySQL-Handbuch darüber und viele andere Themen gelesen . Also habe ich einige Werte in my.cnf geändert
max_allowed_packet = 512M
connect_timeout = 60
net_read_timeout = 120
innodb_buffer_pool_size = 5G
Abfrageprotokoll einer unterbrochenen Verbindung angesehen:
22400 Connect user@host on dbname
22400 Query SELECT @@sql_mode
22400 Query SET SESSION sql_mode=''
22400 Query SET NAMES utf8
22400 Init DB dbname
22400 Init DB dbname
Überprüfter Tabellenstatus. Bindungsadresse ist die Server-IP, aber ich muss in der Lage sein, eine Verbindung von außen herzustellen.
Aborted_connects is 196
Antworten:
Aufgrund der begrenzten Datenmenge frage ich mich, ob Sie eine Firewall zwischen dem Client und dem MySQL-Server haben (möglicherweise direkt auf den Hosts), die 3306 für den MySQL-Server zulässt, aber Antwortpakete für die anfängliche SYN-Anforderung blockiert.
Möglicherweise möchten Sie auf beiden Seiten einen Paketspeicherauszug durchführen, um herauszufinden, was auf der TCP-Seite geschieht, und / oder um zwischen beiden Seiten vorhandene Firewalls zu überprüfen.
quelle
Ich vermute, dass dies kein MySQL-Problem ist.
Stellen Sie sicher, dass die Transportschicht in Ordnung ist. Können Sie eine TCP-Verbindung mit bekommen
telnet [db_server] 3306
?Sind sich Client und Server einig, ob die Verbindung SSL-verschlüsselt werden soll?
Ich kann mir nicht viele Situationen vorstellen, in denen ich eine MySQL-Verbindung über das öffentliche Internet herstellen möchte. Ich vermute, das ist das, was Sie unter "Verbindung von außen herstellen" verstehen. Wenn unverschlüsselt, stellt dies ein großes Sicherheitsrisiko dar, und der Aufwand für das Einrichten von SSL für jede Verbindung ist für die meisten Anwendungen zu hoch. Vielleicht möchten Sie einen dauerhaften verschlüsselten Tunnel verwenden.
quelle
Eine abgebrochene Verbindung wird in MySQL als Verbindungsfehler angesehen, der möglicherweise nicht im MySQL-Fehlerprotokoll protokolliert ist. Siehe abgebrochene TCP-Verbindungen, die nicht als Fehler protokolliert wurden, aber zu einem blockierten Host führen .
quelle