Eu geralmente não recomendo que você abra a porta 3306 para acesso público (ou mesmo com restrições de IP). Eu, pessoalmente, sempre encapsula a porta 3306 com Putty/ssh e, em seguida, apenas uso localhost para conectar ao banco de dados.
Neste caso, não esqueça de conceder privilégios para o usuário assim:
grant all privileges on yourDatabaseName.* to 'yourUserName'@'localhost' identified by "yourUsersPassword";
Se você ainda deseja fazer uma conexão direta, é possível que seu usuário ainda não tenha privilégios suficientes. Você pode tentar isso:
grant all privileges on yourDatabaseName.* to 'yourUserName'@'yourClientsIp' identified by "yourUsersPassword";