Por lo general, no recomiendo que abra el puerto 3306 para acceso público (o incluso con restricciones de IP). Personalmente, siempre hago un túnel en el puerto 3306 con Putty/ssh y luego solo uso localhost para conectarme a la base de datos.
En este caso, no olvide otorgar privilegios para el usuario de esta manera:
grant all privileges on yourDatabaseName.* to 'yourUserName'@'localhost' identified by "yourUsersPassword";
Si aún desea realizar una conexión directa, es posible que su usuario aún no tenga suficientes privilegios. Puedes probar esto:
grant all privileges on yourDatabaseName.* to 'yourUserName'@'yourClientsIp' identified by "yourUsersPassword";