2017-05-23 48 views
0

我有我的家庭網絡上的Linux(Ubuntu 16.04)機器上運行的mysql服務器,我試圖從同一網絡上的Windows 10機器連接到它。它不工作。我可以成功地從Windows機器ping Linux機器,但是當我嘗試從Windows機器telnet到端口3306時,它無法打開連接。我禁用了Windows機器上的防火牆,結果相同。遠程連接到Linux機器上的mysql的問題

這使我相信問題是在Linux機器上。但ufw未啓用,並且在/etc/mysql/my.cnf中沒有綁定到localhost(實際上,除了兩個includedir語句外,沒有其他內容)。任何人都有如何解決問題的建議?

編輯:

lsof命令產生:

ste[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包含

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

/etc/mysql/conf.d/mysql.cnf僅包含[mysql]

/etc/mysql/mysql.conf.d/mysqld.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. 

# 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

查看/etc/mysql/mysql.conf.d/mysqld.cnf中的綁定。 –

回答

1

使用lsof命令確認MySQL正在監聽期望的地址和端口。一個快速的命令是:

# lsof -nP -i :3306 

你應該會看到類似的一行:

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

的「*:3306」在上面的輸出表明,MySQL是綁定到所有接口上的3306端口。

獲得MySQL進程的PID後一種替代方案是:

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

包括康特您的/etc/mysql/my.cnf文件的nts和所包含目錄中的任何配置文件(包含用戶名/密碼混淆)都會有幫助。

+0

我已編輯原始帖子以包含請求的信息。 – Steve

+0

/etc/mysql/mysql.conf.d/mysqld.cnf包含行** bind-address = 127.0.0.1 **。因此,mysqld進程綁定到您的環回地址(127.0.0.1),如lsof輸出中所示。您可以評論/刪除該行或將其更改爲** bind-address = 0.0.0.0 **以偵聽所有地址。除了其他網絡問題,您應該可以從Windows 10機器訪問數據庫。一定要授予用戶遠程訪問權限。 – Deathgrip

+0

順便說一句 - 我看你作爲用戶'史蒂夫'執行lsof命令。以root身份執行它,你應該看到顯示守護進程正在偵聽的端口的行。 – Deathgrip

相關問題