3306端口持续关闭,无法访问MySQL。

4

我有一台运行着Mavericks的Mac电脑,使用 homebrew 安装了MySQL。当我尝试运行 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地址尝试使用时,我得到了与上面相同的响应。我希望能够在运行于我的Parallels VM上的Visual Studio中连接到此数据库。
这件事情发生在昨天某个时间,最终我发现Norton杀毒软件安装后阻止了该端口。因此我使用了其中一个脚本卸载了Norton并重新启动了电脑。一切在工作中都很正常,然而当我回家后,这个端口又关闭了。
无论是我的Mac还是Windows(Parallels VM)机器,都没有开启防火墙。我无法弄清楚为什么这个端口会关闭。我在家庭网络中也没有设置防火墙。这个端口在过去也曾在我的家庭网络中打开过。我无法确定是什么原因导致这个端口突然关闭,甚至连重启电脑都没有。基本上我回家后,端口3306现在被关闭了。有什么想法吗?
编辑:我也尝试在my.cnf文件中添加端口=3306,重新启动了Apache,但这也不能解决我的问题。

MySQL日志显示了什么? - Aziz Saleh
@AzizSaleh 我在哪里可以找到它们? - Crystal
看这个答案找到 my.cnf 文件。它包含了所有的配置选项。https://dev59.com/umsz5IYBdhLWcg3wVGIy - Giacomo1968
1
这似乎是一个绑定问题。它似乎绑定到您的私有IP而不是所有或127.0.0.1/localhost。但这只是我脑海中的想法。 - majidarif
@Crystal,你能检查一下 /etc/my.cnf 文件并找到 bind-address 这一行吗?它包含什么内容? - majidarif
这个问题与SO无关,应该发到[su]上。 - Jim Garrison
3个回答

3
当您对本地主机运行nmap时,它将使用IP地址127.0.0.1。当您对主机名运行它时,它使用主机的“真实”IP地址。
显然,您已经配置了MySQL仅绑定于IP地址127.0.0.1,如果您想从不同的主机访问MySQL(即使该主机在您的计算机内部的虚拟机中运行),则需要更改配置以绑定到所有地址。
找到文件/etc/my.cnf并查看是否包含以下行:
bind-address=127.0.0.1

如果是这样,请删除它或更改为
bind-address=0.0.0.0

如果my.cnf文件中没有绑定到127.0.0.1的行,那么您可能需要查找启动MySQL的脚本,并检查它如何设置绑定地址。


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

0
这似乎是一个绑定问题。它似乎绑定到您的私有IP地址而不是所有IP地址或127.0.0.1 /本地主机。但这只是我暂时想到的。
来自mysql documentation
MySQL服务器在单个网络套接字上侦听TCP / IP连接。此套接字绑定到单个地址,但一个地址可能映射到多个网络接口。默认地址为0.0.0.0。要明确指定地址,请在服务器启动时使用--bind-address = addr选项,其中addr是IPv4地址或主机名。如果addr是主机名,则服务器会将名称解析为IPv4地址并绑定到该地址。服务器根据以下方式处理不同类型的地址:
如果地址为0.0.0.0,则服务器接受所有服务器主机IPv4接口的TCP / IP连接。如果地址是“常规”IPv4地址(例如127.0.0.1),则服务器仅接受针对该特定IPv4地址的TCP / IP连接。
配置

您可以在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服务

来源


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接