I am unable to connect to on my ubuntu installation a remote tcp/ip which contains a mysql installation:

viggy@ubuntu:~$ mysql -u user.name -p -h xxx.xxx.xxx.xxx -P 3306
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx' (111)

I commented out the line below using vim in /etc/mysql/my.cnf:

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           =

Then I restarted the server:

sudo service mysql restart

But still I get the same error.

This is the content of my.cnf:

# 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

# This will be passed to all mysql clients
# It has been reported that passwords should be enclosed with ticks/quotes
# escpecially if they contain "#" chars...
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
socket      = /var/run/mysqld/mysqld.sock
nice        = 0

# * Basic Settings
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
lc-messages-dir = /usr/share/mysql
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address       =
# * Fine Tuning
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10
# * Query Cache Configuration
query_cache_limit   = 1M
query_cache_size        = 16M
# * Logging and Replication
# Both location gets rotated by the cronjob.
# Be aware that this log type is a performance killer.
# As of 5.1 you can enable the log at runtime!
#general_log_file        = /var/log/mysql/mysql.log
#general_log             = 1
# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
# Here you can see queries with especially long duration
#log_slow_queries   = /var/log/mysql/mysql-slow.log
#long_query_time = 2
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
#server-id      = 1
#log_bin            = /var/log/mysql/mysql-bin.log
expire_logs_days    = 10
max_binlog_size         = 100M
#binlog_do_db       = include_database_name
#binlog_ignore_db   = include_database_name
# * InnoDB
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
# * Security Features
# Read the manual, too, if you want chroot!
# chroot = /var/lib/mysql/
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
# ssl-ca=/etc/mysql/cacert.pem
# ssl-cert=/etc/mysql/server-cert.pem
# ssl-key=/etc/mysql/server-key.pem

max_allowed_packet  = 16M

#no-auto-rehash # faster start of mysql but no tab completition

key_buffer      = 16M

# * 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/

(Note that I can log into my local mysql install just fine by running mysql (and it will log me in as root) and also note that I can get into mysql in the remote server by logging into via ssh and then invoking mysql), but I am unable to connect to the remote server via my terminal using the host, and I need to do it that way so that I can then use mysql workbench.

  • It would probably help if you posted your entire my.conf and the contents of your firewall rules. – MDMarra Nov 8 '12 at 18:26
  • @MDMarra I added the entire my.cnf to the question and I dont have any firewall, other than whats in my router. This is the default ubuntu installation. – JohnMerlino Nov 8 '12 at 18:45

It appears you correctly commented out the bind-address directive in my.cnf. But this change needs to be made on the remote server in order to have any effect there; while you seem to have made the change on your local machine. Therefore the change only has effect on your local mysqld, and not the remote mysqld you're trying to access. So you need to ssh into the remote machine and make the change on the remote machine (and then restart mysqld there). You'll also have to check the remote machine's firewall to ensure that it allows you access.

  • Im going to try an ssh tunnel to bypass firewall – JohnMerlino Nov 9 '12 at 2:46
  • I used an ssh tunnel and it worked. – JohnMerlino Nov 9 '12 at 4:06

This could be a user permissions problem. What did you use for your CREATE_USER?

Try making a new user with

CREATE USER 'testuser' IDENTIFIED BY 'somepass';

leave out the normal @'locahost' part so it isn't restricted.

also have a look at /var/log/mysql and see if there are clues...

  • I can connect to localhost fine, Im trying to connect to a remote ip address in this situation. – JohnMerlino Nov 8 '12 at 19:48
  • was there anything of not in the /var/log/mysql file? – user916499 Nov 8 '12 at 22:18

Since you don't have permission to connect directly to the MySQL server on the remote host but have the ability to use ssh, forward a port through ssh and then connect MySQL Workbench to that port.


I had the same problem trying to connect to a remote mysql db.

I fixed it by opening the firewall on the db server to allow traffic through:

sudo ufw allow mysql

(Ubuntu 18)

  1. On the remote mysql server:

    vim /etc/mysql/mysql.conf.d/mysqld.cnf
  2. comment out like this:

    #bind-address       =
  3. Restart your mysql server

    service mysql restart

Try with

mysql -u username -h xxxx.xxxx.xxx.xxxx -P portnumber -D mysql -p

Enter password: ***********

Note -P "P" capital lettre and -D "D" capital also

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.