端口3306继续关闭,无法访问mysql

时间:2014-04-24 02:36:27

标签: mysql

我从Mac homebrew安装了一台安装了MySQL的Mac小牛。当我尝试nmap localhost时,我看到了:

3306/tcp open mysql

当我用我的电脑名称尝试同样的命令时:

nmap my_comp_name

我没有得到3306但是我得到了:

PORT     STATE SERVICE
80/tcp   open  http
3128/tcp open  squid-http
8080/tcp open  http-proxy

它还说我的计算机名解析为某个IP地址。当我使用该IP地址尝试nmap时,我得到与上面相同的响应。我希望能够使用在Parallels VM上运行的Visual Studio连接到此数据库。

这发生在昨天的某个时候,我终于发现安装了诺顿防病毒,阻止了该端口。所以我用他们的一个脚本卸载了Norton并重新启动。一切都在工作正常,然后我又回到了家,港口关闭了。

我的Mac或Windows(Parallels VM)计算机上没有防火墙。我无法弄清楚为什么这个端口被关闭了。我的家庭网络上也没有安装防火墙。此端口也已在我的家庭网络上打开过去。我无法弄清楚是什么导致这个端口突然关闭,甚至没有重新启动我的电脑。我基本上回家了,端口3306现已关闭。有什么想法吗?

编辑:我也尝试在my.cnf文件中添加port = 3306,重新启动apache,这也无法解决我的问题。

3 个答案:

答案 0 :(得分:3)

当您对localhost运行nmap时,它使用IP地址127.0.0.1。当您针对主机名运行它时,它使用主机的“真实”IP地址。

显然,您已将MySQL配置为仅在IP地址127.0.0.1上绑定,并且如果要从其他主机访问MySQL,则需要更改配置以绑定到所有地址(即使主机在VM内部运行)你的机器。)

找到文件/etc/my.cnf并查看它是否包含类似

的行
bind-address=127.0.0.1

如果是,请将其删除或更改为

bind-address=0.0.0.0

如果my.cnf不包含绑定到127.0.0.1的行,那么您可能必须找到启动MySQL的脚本并检查它以查看它如何设置绑定地址。

答案 1 :(得分:1)

您不需要创建或编辑my.cnf

打开mysql启动文件

vi ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

并更改此行

<string>--bind-address=127.0.0.1</string>

<string>--bind-address=0.0.0.0</string>

最后重装MySQL

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

答案 2 :(得分:0)

这似乎是一个绑定问题。它似乎绑定到您的私有IP而不是全部或127.0.0.1/localhost。但这只是我的头脑。

来自mysql documentation

  

MySQL服务器在单个网络套接字上侦听TCP / IP   连接。这个套接字绑定到一个地址,但确实如此   可以将地址映射到多个网络接口。该   默认地址是0.0.0.0。要明确指定地址,请使用   --bind-address = addr选项在服务器启动时,其中addr是IPv4地址或主机名。如果addr是主机名,则服务器会解析   IPv4地址的名称并绑定到该地址。服务器   处理不同类型的地址如下:

     

如果地址为0.0.0.0,则服务器接受TCP / IP连接   所有服务器主机IPv4接口。如果地址是&#34;常规&#34; IPv4的   地址(如127.0.0.1),服务器接受TCP / IP连接   仅针对该特定IPv4地址。

<强>配置

您可以在my.cnf中设置bind-address指令。修改/etc/my.cnf/usr/local/etc/my.cnf,运行:

$ nano /etc/my.cnf

将地址设置为0.0.0.0

bind-address = 0.0.0.0

确保删除以下行或注释掉以下行:

#skip-networking

保存并关闭文件。

最后重新启动mysql服务

source