O problema é que você não permite que novas conexões sejam estabelecidas para o MySQL e você inverte o esporte e o dport:
Chain INPUT (policy DROP)
...
ACCEPT tcp -- 10.99.0.12 anywhere tcp dpt:mysql state NEW,ESTABLISHED
ACCEPT tcp -- localhost anywhere tcp dpt:mysql state NEW,ESTABLISHED
...
Chain OUTPUT (policy DROP)
...
ACCEPT tcp -- anywhere anywhere tcp spt:mysql state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:mysql state ESTABLISHED
...
A saída direita iptables -L
deve ser:
Chain INPUT (policy DROP)
...
ACCEPT tcp -- 10.99.0.12 anywhere tcp spt:mysql state ESTABLISHED
ACCEPT tcp -- localhost anywhere tcp spt:mysql state ESTABLISHED
...
Chain OUTPUT (policy DROP)
...
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql state NEW,ESTABLISHED
...