El error mysql.log muestra
[Warning] Aborted connection 320935 to db: '...' user: '...' host: '...' (Got an error reading communication packets)
Mientras que el lado del cliente obtiene:
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'
Leí el manual de mysql sobre esto, y muchos otros hilos. Entonces cambié algunos valores en my.cnf
max_allowed_packet = 512M
connect_timeout = 60
net_read_timeout = 120
innodb_buffer_pool_size = 5G
Miró el registro de consultas de una conexión rota:
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
Estado de la tabla verificada. bind-address es la IP del servidor pero necesito poder conectarme desde afuera.
Aborted_connects is 196
Respuestas:
Basado en los datos limitados, me pregunto si tiene un firewall entre el cliente y el servidor MySQL (puede estar en los hosts directamente) que permite 3306 al servidor MySQL pero está bloqueando los paquetes de respuesta a la solicitud SYN inicial.
Es posible que desee realizar un volcado de paquetes en ambos lados para resolver lo que está sucediendo en el lado TCP y / o verificar cualquier firewall que exista entre ambos lados.
fuente
Sospecho que este no es un problema de MySQL como tal.
Verifique que la capa de transporte esté bien. ¿Se puede obtener una conexión TCP usando
telnet [db_server] 3306
?¿Su cliente y servidor están de acuerdo sobre si la conexión debe estar encriptada SSL?
No puedo pensar en muchas situaciones en las que me gustaría ejecutar una conexión mysql a través de Internet público, lo que sospecho es lo que quiere decir con 'poder conectarse desde afuera'. Si no se encripta, este es un gran riesgo de seguridad, y la sobrecarga de configurar SSL para cada conexión es demasiado alta para la mayoría de los usos. Es posible que desee ver el uso de un túnel encriptado persistente de algún tipo.
fuente
La conexión anulada se considera un error de conexión en MySQL que puede no estar registrado en el registro de errores de MySQL. Vea que las conexiones TCP caídas no se registran como errores pero dan como resultado un host bloqueado .
fuente