Ho appena trovato la soluzione al mio problema,
Un ringraziamento speciale a @Slava per avermi indicato la strada, dopotutto era iptables.
Quindi, continuavo a ricevere un messaggio "Connessione MySQL rifiutata" quando provavo a connettermi in remoto, quindi ho cercato un modo per vedere i registri delle connessioni TCP e ho trovato tcpdump
comando.
Eseguendo sudo tcpdump port 3306 -vvv -n
Ho visto il seguente output ogni volta che ho provato a connettermi in remoto:
Ho cercato nella pagina man di tcpdump e ho visto che R significa flag TCP RST (RESET).
Ho cercato un po' e ho trovato questo domanda e la sua risposta accettata mi ha portato di nuovo in IPTABLES che @Slava ha suggerito sin dal primo commento.
In quel momento ho guardato da vicino e ho visto che il mio INPUT ACCEPT tcp:3306 è stato definito dopo la regola REJECT TCP rifiuto-con tcp-reset, quindi il registro veniva mostrato.
Dopo questo ho appena rimosso la regola per accettare tcp:3306 e l'ho anteposta alle regole di rifiuto tcp e voilà!
iptables -D INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
iptables -I INPUT {line number from the first reject tcp rule} -p tcp -m tcp --dport 3306 -j ACCEPT
IPTABLES ora si presenta così e finalmente posso connettermi a MySQL da remoto:
Per elencare gli iptables con i numeri di riga, digita:
sudo iptables -nL --line-numbers
Considerazioni finali:
- Questo può essere migliorato inserendo nella whitelist l'indirizzo IP di origine da cui stai effettuando la connessione remota per questioni di sicurezza.