MySQL错误111无法连接到服务器

时间:2013-10-07 07:39:17

标签: php mysql pdo

我有一个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)

2 个答案:

答案 0 :(得分:3)

111表示连接被拒绝

这可能意味着您的MySQL服务器只是在监听localhost接口。

如果你有这样的行:

skip-networking
bind-address = 127.0.0.1

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

答案 1 :(得分:0)

好吧,你/etc/mysql/my.cnf: 你应该找到这个:

skip-networking
bind-address = 127.0.0.1

您必须对第一个进行评论,并将ip更改为0.0.0.0或您要允许的远程主机的IP(推荐) 此外,您可能没有用户连接到该主机,我的意思是,mysql用户就像&#39; root&#39; @&#39; 192.168.1.1&#39;,所以你可以试试与不存在的用户访问。尝试创建它,然后授予它所有特权。 只需在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

应该做的工作,至少是我如何解决类似的问题。