我从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,这也无法解决我的问题。
答案 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服务器在单个网络套接字上侦听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服务。