2017-05-23 47 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

相关问题