【问题标题】:Mysql No connection could be made because the target machine actively refused itMysql 无法连接,因为目标机器主动拒绝
【发布时间】:2014-05-09 07:20:27
【问题描述】:

我知道已经有很多人问过这个问题,但是这个人大多忘记了被防火墙阻止的密码,我没有这种情况。

我正在使用 php 进行开发,我需要连接到远程数据库以让我的所有团队都可以使用它。

localhost 一切正常,但是当我尝试切换时,它给了我这个错误

无法建立连接,因为目标机器主动 拒绝了。

这是我要连接到 .nf.biz 数据库的代码:

$db=mysqli_connect($host,$user,$password,$db_name,3306);

【问题讨论】:

  • 这不是代码问题,而是网络配置问题。
  • 我什至禁用了我的防火墙,但还是一样!!
  • 可能 MySQL 没有运行(因此操作系统拒绝连接)。
  • 或者你指向错误的机器。

标签: php mysql database mysqli database-connection


【解决方案1】:

您的 MySQL 服务器仅接受 *nix 套接字(/var/run/mysqld/mysqld.sock,如果您正在运行 Ubuntu)或仅本地主机上的连接。

您必须编辑您的 my.cnf(在 Ubuntu 上再次位于 /etc/mysql/my.cnf)并更改以下内容:

bind-address = 0.0.0.0

并注释掉以下内容

#skip-networking

最后重启 MySQL。

请注意,如果您的 MySQL 机器可以从公共 Internet 访问,则将接受来自所有人的连接!

【讨论】:

  • 我之前看到过这个解决方案,但我没有在 my.ini 中找到绑定地址!
  • MySQL 运行在哪个操作系统上?
  • 我正在使用 8.1,wamp 是我的 apache 和 mysql 客户端
  • 好的。然后你必须将它添加到 [mysqld] 部分。还要确保跳过网络被注释掉。
  • 我确实重启了机器,但什么也没发生,这是你需要的结果,TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 5420
【解决方案2】:

即使这不是你的情况,我也会在这里添加答案,因为这个错误的消息是一样的。

当您在 c:\Windows\System32\Drivers\etc\hosts 中有 localhost 的别名时,MySQL 服务器中存在错误,MySQL 服务器无法接受到 localhost 的连接。

删除别名,MySQL 服务器将开始接受到 localhost 的连接。

【讨论】:

    【解决方案3】:

    我解决了只在绑定地址中添加端口的问题:127.0.0.1:3388

    【讨论】:

      【解决方案4】:

      没有#skip-networking选项。

      我通过散列绑定地址行来解决它(见下面的第 3 行)。

      # 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
      

      【讨论】:

      • 在 linux ubuntu 20 这是编辑配置的 cmd sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
      【解决方案5】:

      这可能有点晚了,但对于未来的访客来说,

      我当时发现 biz.nf 拒绝从外部来源与其数据库的任何连接,这意味着只有 biz.nf 可以访问他们的数据库,但您会被拒绝。

      【讨论】:

        【解决方案6】:

        转到服务启用以root用户命名的服务(在“登录为”类别下->网络服务)

        【讨论】:

          【解决方案7】:

          我通过将 my.cnf 中的绑定地址设置为服务器的 public IP 地址来解决此问题:

          # Instead of skip-networking the default is now to listen only on
          # localhost which is more compatible and is not less secure.
          bind-address            = SERVER_IP_ADDRESS
          

          【讨论】:

            【解决方案8】:

            当数据库没有响应时会发生此错误。

            我通过以下步骤解决了这个错误:

            1. 按 CTRL+R,然后键入 service.msc。将打开一个窗口。
            2. 检查 MYSQL56 或 MYSQL57,点击它。
            3. 现在位于窗口的左下角。点击展开。
            4. 再次刷新窗口,您可以看到启动服务选项。
            5. 点击它,错误就解决了。

            这对我有用。希望您的错误也得到解决。 给我发邮件:rkkp1023@gmail.com

            【讨论】:

            • 您能进一步解释一下吗?我认为在使用远程数据库时没有任何可能进入某些服务管理器,正如这个问题中给出的那样
            【解决方案9】:

            在 Windows 10 上使用 Wamp (php7)... 它当前正在工作,然后突然显示该错误。我重新启动了我的笔记本电脑,错误消失了......

            【讨论】:

              【解决方案10】:

              您必须为当前活动的 mysql 服务器启动服务,例如我的是 mysql80,因此以下步骤可能会有所帮助:

              start> cmd>run as administrator> sc start mysql80
              

              【讨论】:

              • 您能进一步解释一下吗?我认为在使用远程数据库时没有任何可能进入某些服务管理器,正如这个问题中给出的那样
              【解决方案11】:

              您的 MySQL 服务器仅接受 *nix 套接字上的连接(/var/run/mysqld/mysqld.sock,如果您正在运行 Ubuntu)或仅适用于 localhost。

              您必须编辑您的 my.cnf(在 Ubuntu 上再次位于 /etc/mysql/my.cnf)并更改以下内容:

              bind-address = 0.0.0.0
              

              并注释掉以下内容

              #skip-networking
              

              最后重启 MySQL。

              请注意,如果您的 MySQL 机器可以从公共 Internet 访问,则将接受来自所有人的连接!

              sudo -s
              sudo gedit /etc/mysql/my.cnf
              bind-address = 0.0.0.0
              #skip-networking
              save
              sudo service mysql restart
              

              工作完美!

              【讨论】:

                猜你喜欢
                • 2017-09-30
                • 1970-01-01
                • 1970-01-01
                • 2021-05-05
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-08-24
                相关资源
                最近更新 更多