Firewall looks okay. After you changed the
bind-address, did you restart MySQL?
Also, instead of opening up the MySQL port to the entire world, are you able to limit it to a few IPs? The question is, how many remote hosts need to connect to MySQL? If (i) a few and (ii) they have static IPs, then you're best advised to limit MySQL access to those IPs, only.
Lastly, are the remote hosts trying to connect to MySQL also behind a firewall?