【问题标题】:port 3306 continues to close, no access to mysql3306端口继续关闭,无法访问mysql
【发布时间】:2014-06-09 03:24:22
【问题描述】:

我有一台运行 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 地址尝试 nmap 时,我得到与上述相同的响应。我希望能够使用在我的 Parallels VM 上运行的 Visual Studio 连接到该数据库。

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

我没有为我的 Mac 或 Windows (Parallels VM) 机器启用防火墙。我不知道为什么这个端口被关闭。我的家庭网络上也没有设置防火墙。这个端口过去在我的家庭网络上也已打开。我不知道是什么原因导致这个端口突然关闭,甚至没有重新启动我的电脑。我基本上回家了,端口3306现在已经关闭了。有什么想法吗?

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

【问题讨论】:

  • MySQL 日志显示什么?
  • @AzizSaleh 我在哪里可以找到这些?
  • 查看这个答案以找到my.cnf 文件。其中包含所有配置选项。 stackoverflow.com/questions/7973927/…
  • 这似乎是一个绑定问题。它似乎绑定到您的私有 ip 而不是全部或 127.0.0.1/localhost。但这只是我的想法。
  • @Crystal 你能检查你的/etc/my.cnf 并找到bind-address 行吗?它包含什么?

标签: mysql


【解决方案1】:

当您对 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 的脚本并检查它以查看它如何设置绑定地址。

【讨论】:

    【解决方案2】:

    这似乎是一个绑定问题。它似乎绑定到您的私有 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 接口。如果地址是“常规”IPv4 地址(如 127.0.0.1),服务器接受 TCP/IP 连接 仅适用于该特定 IPv4 地址。

    配置

    您可以在my.cnf 中设置绑定地址指令。编辑/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.

    【讨论】:

      【解决方案3】:

      您无需创建或编辑 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
      

      【讨论】:

        猜你喜欢
        • 2011-09-02
        • 2020-03-15
        • 1970-01-01
        • 2016-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-11
        • 2017-11-20
        相关资源
        最近更新 更多