Unable to connect to remote MySQL Server

February 27, 2017 11k views
MySQL Ubuntu 16.04

I am trying to connect to a remote MySQL server 5.7 installed on Ubuntu 16.04 from my workstation.

Here is the error i am getting (Using Navicat to connect).


To make it work I followed the following steps.

1) GRANT ALL ON databasename.* TO user@xx.xxx.xx.xx IDENTIFIED BY 'yourpassword';

2) flush privileges;

3) sudo /etc/init.d/mysql restart

Some forums recommends commenting line starts with "bind-address" on my.cnf which resides in /etc/mysql/my.cnf. The problem is there is no such line on my installation.

# The MySQL database server configuration file.
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

I also tried to open ports on firewall using the following commands.

sudo ufw allow 3306/tcp
sudo service ufw restart

But still stuck with the same problem.

2 Answers
jtittle1 February 27, 2017
Accepted Answer


Inside /etc/mysql/mysql.conf.d/ there should be a file called mysqld.cnf, if you'll open that file up:

nano /etc/mysql/mysql.conf.d/mysqld.conf

... and then find this line:

bind-address            =

You'll need to replace with your Droplet's Public IPv4 IP address, and then restart MySQL. The above line is telling MySQL to only accept local connections, so we need to bind MySQL to a public IP that you can connect to.

The above is beneficial if you need to connect from your local PC/Mac, though if you need to connect from another server in the same data center, you can instead use the Private Network IPv4 Address if you enabled private networking during deployment.

Have another answer? Share your knowledge.