Reputation: 1019
I have mysql server running on a linux (Ubuntu 16.04) machine on my home network, and I am trying to connect to it from a Windows 10 machine on the same network. It's not working. I can successfully ping the linux machine from the windows machine, but when I try to telnet to port 3306 from the Windows machine, it can't open the connection. I disabled the firewall on the Windows machine, and same result.
This leads me to believe the problem is on the linux machine. But ufw is not enabled and there is no bind to localhost in /etc/mysql/my.cnf (in fact there is nothing in there except two includedir statements). Anyone have advice on how to troubleshoot?
Edit:
The lsof command yields:
steve@steve-MS-7253:~$ lsof -nP -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysql-wor 28172 steve 22u IPv4 254049 0t0 TCP 127.0.0.1:56712->127.0.0.1:3306 (ESTABLISHED)
mysql-wor 28172 steve 23u IPv4 253520 0t0 TCP 127.0.0.1:56710->127.0.0.1:3306 (ESTABLISHED)
/etc/mysql/my.cnf contains
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
/etc/mysql/conf.d/mysql.cnf contains only [mysql]
/etc/mysql/mysql.conf.d/mysqld.cnf contains
#
# 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.
# Here is entries for some specific programs
# The following values assume you have at least 32M ram
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
#
# * 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
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer_size = 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-options = 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 log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
#log_slow_queries = /var/log/mysql/mysql-slow.log
#long_query_time = 2
#log-queries-not-using-indexes
#
# 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
Upvotes: 0
Views: 844
Reputation: 398
Use the lsof command to confirm that MySQL is listening the desired address and port. One quick command is:
# lsof -nP -i :3306
You should see a line similar to:
mysqld 3225 mysql 11u IPv4 20260 0t0 TCP *:3306 (LISTEN)
The '*:3306' in the above output indicates that MySQL is bound to all the interfaces on port 3306.
An alternative after getting the PID of the MySQL process is:
# lsof -nP -p 3225 | grep LISTEN
mysqld 3225 mysql 11u IPv4 20260 0t0 TCP *:3306 (LISTEN)
Including the contents of your /etc/mysql/my.cnf file and any configuration files in the included directories (with username/password obfuscated) would have been helpful.
Upvotes: 1