Generalnie nie zalecam otwierania portu 3306 dla publicznego dostępu (lub nawet z ograniczeniami IP). Osobiście zawsze tuneluję port 3306 za pomocą Putty/ssh, a następnie po prostu używam localhost do łączenia się z bazą danych.
W takim przypadku nie zapomnij o nadaniu uprawnień użytkownikowi w następujący sposób:
grant all privileges on yourDatabaseName.* to 'yourUserName'@'localhost' identified by "yourUsersPassword";
Jeśli nadal chcesz nawiązać bezpośrednie połączenie, możliwe, że Twój użytkownik nadal nie ma wystarczających uprawnień. Możesz spróbować tego:
grant all privileges on yourDatabaseName.* to 'yourUserName'@'yourClientsIp' identified by "yourUsersPassword";