I am trying to connect to a remote MySQL 5.7 server installed on Ubuntu 16.04 from my workstation.
Here is the error I am getting (using Navicat to connect).

To do this, I have completed the following steps.
1) GRANT ALL ON database_name.* TO user@xx.xxx.xx.xx IDENTIFIED BY 'your_password';
2) flush privileges;
3) sudo /etc/init.d/mysql restart
Some forums recommend that the comment line begin with "bind-address" on my.cnfwhich is located at /etc/mysql/my.cnf. The problem is that in my installation there is no such line.
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
I also tried opening the ports in the firewall using the following commands.
sudo ufw allow 3306/tcp
sudo service ufw restart
But still the problem is with the same problem.
: MySQL ,
bind-address=0.0.0.0 my.cnf. MySQL .
demo@ubuntu:~$ sudo /etc/init.d/mysql restart
[....] Restarting mysql (via systemctl): mysql.serviceJob for mysql.service failed because the control process exited with error code.
See "systemctl status mysql.service" and "journalctl -xe" for details.
failed!
demo@ubuntu:~$