1

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

3 回答 3

3

111 表示连接被拒绝

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

如果你有这样的行:

skip-networking
bind-address = 127.0.0.1

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

于 2013-10-07T07:43:00.393 回答
0

我现在面临同样的错误几个小时。原来我在我的代码中给出了错误的端口。

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

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

于 2021-11-08T22:12:49.150 回答
0

好吧,在你 /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

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

于 2017-05-31T13:41:23.280 回答