【问题标题】:MySQL Error 111 Can't connect to serverMySQL 错误 111 无法连接到服务器
【发布时间】:2013-10-07 07:39:17
【问题描述】:

我有一个connection.php 文件,它假设连接到远程数据库。 代码如下:

<?php
try {
    $conn = new PDO('mysql:host=IP;port=PORT;dbname=DBNAME', 'USERNAME', 'PASSWORD');
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
} 
?>

现在我认为我的所有变量都是正确的,因为我可以通过Toad 连接到数据库。我通过 localhost 为我自己的数据库连接使用了相同的 PDO 格式,它工作正常。我不确定问题是什么。因为我可以使用Toad,所以我相信服务器已经允许远程访问它,但我不确定。任何输入都会很好。

这也是 PDOException 返回的错误:

SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'IP' (111)

【问题讨论】:

  • 当我的文件无法连接时,Toad 如何连接到我的数据库?他们不是以相同的方式连接并且都需要相同的远程权限吗?示例:他们都需要绑定地址才能工作?还是不行?

标签: php mysql pdo


【解决方案1】:

111 表示连接被拒绝,

这可能意味着你的 MySQL 服务器只监听了localhost 接口。

如果你有这样的行:

skip-networking
bind-address = 127.0.0.1

您应该在 my.cnf 配置文件中将它们注释掉(在行首添加 #),然后重新启动 MySQL。

【讨论】:

  • 即使我可以通过 Toad 连接并查看数据库,它仍然只能在 localhost 上监听?
【解决方案2】:

好吧,在你 /etc/mysql/my.cnf : 你应该知道这个:

skip-networking
bind-address = 127.0.0.1

您必须评论第一个,并将 ip 更改为 0.0.0.0 或您想要允许的远程主机的 ip(推荐) 另外,您可能没有连接到该主机的用户,我的意思是,mysql 用户就像'root'@'192.168.1.1',因此您可以尝试使用不存在的用户进行访问。尝试创建它,然后授予它所有特权。 只需在 mysql 上执行这几个命令:

CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY '***'; GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.1.100' IDENTIFIED BY '***';

另外,如果使用 linux,请确保 mysql 正在侦听正确的端口:

netstat -tlpn

应该做这项工作,至少我是这样解决类似问题的。

【讨论】:

    【解决方案3】:

    几个小时以来,我一直面临同样的错误。 原来我在代码中输入了错误的端口。

    我要连接的端口是默认的端口 3306,我使用的是 3327。

    希望它可能对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-07-30
      • 2010-11-28
      • 2016-12-14
      • 2010-12-13
      • 1970-01-01
      • 2016-01-11
      • 2016-12-19
      相关资源
      最近更新 更多