Este é provavelmente o seu problema:
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
A ordenação de regras está errada. As regras do iptables são avaliadas "de cima para baixo" e a primeira regra que corresponde (com pouquíssimas exceções) é a final. Você tem uma regra REJECT
que precede a regra ACCEPT
, portanto, a regra REJECT tem precedência e a conexão é recusada.
Inverte a ordem dessas duas regras no seu conjunto de regras e você provavelmente descobrirá que o erro desaparece.
Eu também sugiro que você não permita logins remotos usando a conta root
do MySQL, como você parece estar fazendo com base no conteúdo da tabela mysql.user
, particularmente desde que você não esteja fazendo nada para limitar onde as conexões da Internet são permitidas. Em vez disso, use uma conta dedicada e conceda as permissões necessárias para os bancos de dados apropriados e considere a possibilidade de aumentar a segurança no nível de IP também.