In my Ubuntu's /etc/mysql/my.conf, I have:

bind-address =  # My external IP

It works fine from remote, but when I want to connect locally, the app that uses on MySQL says: java.net.ConnectException: Connection refused at com.mysql.jdbc.StandardSocketFactory.connect.

So when I want to work locally, I change my.cnf to:

bind-address =

And it starts working locally, but then it doesn't work from remote anymore.

How to make MySQL accesible both from remote AND local?


2 Answers 2


Just comment out bind-address= altogether. When you do that, it will bind to all addresses. Also make sure that you don't have skip-networking enabled in your my.cnf.

  • Awesome. Glad I could help!
    – EEAA
    Commented Aug 18, 2010 at 2:21
  • I have bind-address commented, no skip-networking, my user is defined as 'test3@%', I can connect with mysql -h -P 3306 -u test3 -D test3 and yet I can't connect with localhost.
    – Adrien
    Commented Jul 14, 2015 at 9:41
  • @Adrien You need to create another user with the same name that can access to localhost
    – jedi
    Commented Jun 26, 2016 at 12:54

I've JUST got it to work using the command line tools on the server and remotely via php. Along with making sure skip-networking was hashed out (and our firewall rubbish), what I had to do was:

  1. Try the command line tool on the server hosting the db (e.g. shell> mysql -h localhost -u root -p then enter password)

  2. Make a note of the / path it tries to connect from (ending with .sock)

  3. Go into my.cnf and make sure in the [client] and [mysqld] sections that socket= contains the path you found in step 2.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .