Pode estar fora do escopo, mas eu prefiro nunca deixar um banco de dados escutar em uma porta pública e isso pode ajudá-lo a evitar o problema.
Eu configurei todos os bancos de dados remotos que eu preciso com [auto] ssh para escutar no host local da máquina, eu quero acessar o banco de dados. Isso:
autossh N -f -L 3307:127.0.0.1:3306 yourserver
ligaria porta em 127.0.0.1:3306 de yourserver para a porta localhost 3307 da máquina de sua chamada. Você nem precisa de privilégios sudo para ligar esta porta.
Quando você acessa agora o servidor com
mysql -u user -P 3307 -h 127.0.0.1 -p
você é um usuário "localhost" no host remoto e não haveria mais a necessidade de uma diretiva 'user'@'remote'
ou 'user'@'%'
. Mas não use
mysql -u user -P 3307 -h localhost -p
porque desta forma o cliente mysql tenta se conectar ao socket, o qual não foi encaminhado desta maneira e portanto não é acessível.
O SSH é rápido depois de uma configuração de conexão, você não deve sentir sobrecarga. autossh
tenta infinitamente restabelecer a conexão após um dropout em comparação com o ssh, que acabará de terminar.