Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL错误mysqli::_construct():(HY000/2002):连接被拒绝_Php_Mysql_Mysqli_Pdo - Fatal编程技术网

Php MySQL错误mysqli::_construct():(HY000/2002):连接被拒绝

Php MySQL错误mysqli::_construct():(HY000/2002):连接被拒绝,php,mysql,mysqli,pdo,Php,Mysql,Mysqli,Pdo,我正在尝试运行包含MySQL连接的PHP脚本,当我运行命令时,终端中出现以下错误: 'Warning: mysqli::__construct(): (HY000/2002): Connection refused' 即使使用PDO,我也会得到错误: 'Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory in ...' 我在MacOSX上运行这个脚本,我将MAMP作为APAC

我正在尝试运行包含MySQL连接的PHP脚本,当我运行命令时,终端中出现以下错误:

'Warning: mysqli::__construct(): (HY000/2002): Connection refused'
即使使用PDO,我也会得到错误:

'Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory in ...'
我在MacOSX上运行这个脚本,我将MAMP作为APACHE/MySQL本地服务器

我用于运行脚本的命令是:

'php main.php'

带有PDO的“main.php”文件的内容是:

$db = new PDO('mysql:host=localhost;dbname=test',root,root);
使用mysqli连接器:

$db = new mysqli("localhost", "test", "root", "root");

我尝试使用“127.0.0.1”而不是“localhost”,但在这两种情况下都出现了相同的错误

首先,使用
localhost
作为域名是非常必要的。它将解析为
127.0.0.1

其次,即使使用
127.0.0.1
也可能无法在具有多个接口或特殊路由规则的服务器中工作。运行
mysqlcheck--help
并获取“主机”字段底部显示的IP地址。例如:

port                              3306
host                              192.168.1.23
使用MySQL识别的IP和端口:

$db = new mysqli("192.168.1.23:3306", "test", "root", "root");

您可能的解决方案:您是否能够使用shell或其他客户端连接到MySql?是的,当然,我能够使用shell访问MySql,我测试了它,问题是当我尝试使用php命令运行脚本时,您能否分享关于“它将无法解决”语句的更多详细信息?我认为文档不一致,因为使用了
localhost
,也不一致……此外,您提供的链接显示成功启动了
localhost
127.0.0.1
的MySQL连接,正如我在链接“PHP中不受支持”(not supported in PHP)中所述,PHP文档本身明确提到的(第二段):“主机名localhost有一个特殊的含义。它与Unix域套接字的使用有关。不可能使用主机名localhost打开TCP/IP连接,而必须使用127.0.0.1。”是的,如文中所述:“不可能打开TCP/IP连接”-使用套接字可以很好地工作。此外,使用套接字会更快,因为您可以跳过网络开销(有关此信息,请参阅)