O mysql error.log mostra
[Warning] Aborted connection 320935 to db: '...' user: '...' host: '...' (Got an error reading communication packets)
Enquanto o lado do cliente obtém:
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'
Eu li o manual do mysql sobre isso, e muitos outros tópicos. Então eu mudei alguns valores no my.cnf
max_allowed_packet = 512M
connect_timeout = 60
net_read_timeout = 120
innodb_buffer_pool_size = 5G
Observou o log de consulta de uma conexão interrompida:
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
Status da tabela verificada. endereço de ligação é o IP do servidor, mas eu preciso ser capaz de conectar de fora.
Aborted_connects is 196
Respostas:
Com base nos dados limitados, pergunto-me se você possui um firewall entre o cliente e o servidor MySQL (pode estar diretamente nos hosts) que permite 3306 ao servidor MySQL, mas está bloqueando os pacotes de resposta à solicitação SYN inicial.
Você pode executar um despejo de pacotes nos dois lados para descobrir o que está acontecendo no lado TCP e / ou verificar os firewalls existentes entre os dois lados.
fonte
Eu suspeito que este não é um problema de mysql como tal.
Verifique se a camada de transporte está OK. Você pode obter uma conexão TCP usando
telnet [db_server] 3306
?Seu cliente e servidor estão de acordo sobre se a conexão deve ser criptografada em SSL?
Não consigo pensar em muitas situações em que eu gostaria de executar uma conexão mysql pela Internet pública, que suspeito ser o que você quer dizer com 'capaz de se conectar de fora'. Se não criptografado, esse é um grande risco à segurança, e a sobrecarga de configuração do SSL para cada conexão é muito alta para a maioria dos usos. Você pode querer usar algum tipo de túnel criptografado persistente.
fonte
A conexão interrompida é considerada um erro de conexão no MySQL que pode não estar logado no log de erros do MySQL. Consulte conexões TCP descartadas não registradas como erros, mas resultam em host bloqueado .
fonte