2017-05-23 5 views
0

Ich habe mysql Server auf einem Linux-Rechner (Ubuntu 16.04) in meinem Heimnetzwerk, und ich versuche, es von einem Windows 10-Rechner im selben Netzwerk zu verbinden. Es funktioniert nicht. Ich kann den Linux-Computer erfolgreich von der Windows-Maschine aus pingen, aber wenn ich versuche, von der Windows-Maschine zu Port 3306 telnet, kann es die Verbindung nicht öffnen. Ich habe die Firewall auf der Windows-Maschine und das gleiche Ergebnis deaktiviert.Problem mit der Remote-Verbindung zu MySQL auf Linux-Maschine

Das führt mich zu der Annahme, dass das Problem auf der Linux-Maschine ist. Aber ufw ist nicht aktiviert und es gibt keine Bindung zu localhost in /etc/mysql/my.cnf (tatsächlich gibt es nichts außer zwei includedir-Anweisungen). Hat jemand Ratschläge zur Fehlerbehebung?

Edit:

Der lsof-Befehl ergibt:

[email protected]:~$ 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 enthält

!includedir /etc/mysql/conf.d/ 
!includedir /etc/mysql/mysql.conf.d/ 

/etc/mysql/conf.d/mysql.cnf enthält nur [mysql]

/etc/mysql/mysql.conf.d/mysqld.cnf enthält

# 
# 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 
+0

Werfen Sie einen Blick in /etc/mysql/mysql.conf.d/mysqld.cnf für die Bindung. –

Antwort

1

Verwenden Sie den Befehl lsof, um zu bestätigen, dass MySQL die gewünschte Adresse und den Port abgehört. Ein kurzer Befehl lautet:

# lsof -nP -i :3306 

Sie sollten eine Zeile ähnlich sehen:

mysqld 3225 mysql 11u IPv4 20260  0t0 TCP *:3306 (LISTEN) 

Die ‚*: 3306‘ in der obigen Ausgabe zeigt an, dass MySQL ist verpflichtet, alle Schnittstellen auf Port 3306.

Eine Alternative nach der PID des MySQL-Prozess bekommen ist:

# lsof -nP -p 3225 | grep LISTEN 
mysqld 3225 mysql 11u IPv4  20260  0t0 TCP *:3306 (LISTEN) 

Einschließlich der conte nts Ihrer /etc/mysql/my.cnf Datei und alle Konfigurationsdateien in den enthaltenen Verzeichnissen (mit Benutzername/Passwort verschleiert) wären hilfreich gewesen.

+0

Ich habe den ursprünglichen Post bearbeitet, um die angeforderten Informationen aufzunehmen. – Steve

+0

Die Datei /etc/mysql/mysql.conf.d/mysqld.cnf enthält die Zeile ** bind-address = 127.0.0.1 **. Der mysqld-Prozess bindet also an Ihre Loopback-Adresse (127.0.0.1), wie in der Ausgabe von lsof zu sehen ist. Sie können diese Zeile kommentieren oder entfernen oder sie in ** bind-address = 0.0.0.0 ** ändern, um alle Adressen abhören zu können. Abgesehen von anderen Netzwerkproblemen sollten Sie dann von Ihrem Windows 10-Computer auf die Datenbank zugreifen können. Stellen Sie sicher, dass Benutzern Remotezugriff gewährt wird. – Deathgrip

+0

BTW - Ich sehe Sie den Befehl lsof als Benutzer 'steve' ausgeführt. Führe es als root aus und du solltest die Zeile (n) sehen, die anzeigt, welchen Port der Daemon gerade abhört. – Deathgrip