Hello Thomas,
"Can't connect" is different than "Can't authenticate". Something is blocking your access to port 3306 on that public IP address.
Test using telnet to see what string is returned when you connect from your off-system terminal (your local PC) to your database. If you can see the version number of your MySQL instance as part of the initial response, you know you are talking to your MySQL.
(an example, adjust for your build of telnet and your public address)
telnet x.x.x.x 3306
<hit enter a couple of times>
Because you are not logging in with a client capable of doing the binary login handshake fast enough, the server will automatically fail the connection attempt. But this is a quick-and-dirty way to see if you are actually connecting to the resource you are trying to reach.
see also:
https://dev.mysql.com/doc/refman/5.7/en/can-not-connect-to-server.html
Shawn Green
MySQL Senior Principal Technical Support Engineer