mysqli_real_connect(): (HY000/2002): 没有这样的文件或目录

mysqli_real_connect(): (HY000/2002): No such file or directory

提问人:luigi 提问时间:1/27/2017 最后编辑:Dharmanluigi 更新时间:1/18/2023 访问量:306644

问:

mysqli_real_connect(): (HY000/2002): No such file or directory

MacOS上的PhpMyAdmin错误。我想要答案,我真的不知道我需要做些什么来解决这个问题。

php macos mysqli phpmyadmin

评论

0赞 wake-0 1/27/2017
中方能否提供更多信息?
0赞 Black 3/18/2021
检查您的MySQL服务器是否正在运行:stackoverflow.com/a/50227592/4684797

答:

147赞 naiz0 2/2/2017 #1

在 /etc/phpmyadmin/config.inc.php 中将 localhost 更改为 127.0.0.1

$cfg['Servers'][$i]['host'] = '127.0.0.1';

这样做的原因是,如果您使用 localhost,则 pma 会尝试连接到 mysql.socket。如果您使用 127.0.0.1,PMA 会建立应该可以工作的 TCP 连接。

评论

7赞 Nilpo 3/18/2017
我很高兴找到这个答案来让事情正常运转,但真正的解决方法是什么?这是一种解决方法。您应该能够使用 .localhost
2赞 imclean 5/30/2017
你会这么认为,但显然不是。关于“连接类型”设置:“自 4.7.0 版起已弃用:自 4.7.0 起不再使用此设置,因为 MySQL 根据主机决定连接类型,因此可能会导致意外结果。编号: docs.phpmyadmin.net/en/latest/config.html
0赞 Bachsau 3/24/2018
“真正的解决方法”是阅读并理解MySQL文档,然后编辑您的配置文件并拥有一个系统,您可以在其中知道发生了什么,而不是仅仅遵循一些建议,并在它工作后立即忘记所有内容。如果要使用,则必须将MySQL配置为侦听套接字而不是TCP / IP。当您的数据库在同一台机器上时,我总是建议这样做。localhost
0赞 ashukid 2/14/2020
非常感谢伙计。我被困了一段时间。不知道问题这么小。
0赞 peppy 5/1/2021
如果我的MySQL服务器托管在不同的IP上,例如“64.233.191.255”,我该怎么办?我有我的MySQL bind=64.233.191.255,在我的config-db.php文件中,我有:$dbserver='64.233.191.255';(无论如何,我都尝试了您的解决方案,但仍然出现错误)。我正在尝试让phpmyadmin 4:4.9.5 + dfsg1-2在Ubuntu 20.04上工作
-8赞 Dann 5/1/2017 #2

您只需要将ib_logfile0重命名为 ib_logfile_0 和 ib_logfile_1 ib_logfile1。那么你的问题就会得到解决。

评论

0赞 Paweł Tomkiel 8/17/2018
这完全无关紧要。
0赞 Anthony 5/13/2019
您的答案与问题无关。重命名日志文件不会帮助mysqli找到套接字或与MySQL服务器的连接。如果我们误解了您的答案,您可能需要更新它,否则删除此答案会更好。请阅读如何回答指南。
11赞 Randika Vishman 6/20/2017 #3

mysqli_connect(): (HY000/2002): 没有这样的文件或目录

背景:

我只是想使用终端在我的 Mac 上运行一些 PHPUnit 测试。 我想测试的一些类必须连接由 PHPMyAdmin 创建和管理的 MySQL 数据库,并且我正在使用的 Web 应用程序在 localhost 中运行良好。因此,当我运行该测试用例时,我的终端上出现了以下错误:

mysqli_connect(): (HY000/2002): No such file or directory

溶液:

因此,由于瘙痒,我不得不解决它并运行我的测试,我在几个 SO Q&A 线程中搜索并尝试了一下。这些变化的组合对我有用。

  1. 找到与 PHPMyAdmin 相关的文件。config.inc.php
  2. 找到该行,该行可能已被默认注释掉,如果是这样,请取消注释。$cfg['Servers'][$i]['host']
  3. 并将该行替换为以下内容:

$cfg['Servers'][$i]['host'] = '127.0.0.1';

  1. 保存它并从 XAMPP 控制面板 (manager-osx) 重新启动 MySQL 数据库。
  2. 将方法中的参数值更改为以下内容:$hostmysqli_connect()

$_connection = mysqli_connect(**"localhost: 3306"**, $_mysql_username, $_mysql_password, $_database);

注意:这是我的MySQL端口号,这是它的默认值。在执行这些步骤之前,您最好检查一下实际的MySQL端口号。3306

仅此而已。对我来说,只有这组步骤有效,没有别的。我运行了我的单元测试,它工作正常,数据库数据也根据测试正确更新。

为什么这样做:

我能找到的最接近的原因是它有效,因为有时该方法需要数据库的工作套接字(数据库主机的 IP 地址以及端口号)。因此,如果您注释掉了该行或将“localhost”设置为其中的值,它将忽略端口号。但是如果你想使用套接字,那么你必须使用'127.0.0.1'或真实的主机名。(对我来说,似乎无论我们真正拥有的默认端口号如何,我们都必须执行上述步骤。阅读以下 PHPMyAdmin 链接了解更多详情。mysqli_connect$cfg['Servers'][$i]['host'] = '127.0.0.1';

希望这可能对其他人有所帮助。

干杯!

23赞 faruq ah 6/23/2017 #4

我之前尝试过这个

cd /opt/lampp/phpmyadmin

然后

gedit config.inc.php

找到这个

$cfg['Servers'][$i]['host'] = 

如果有,请将其更改为localhost127.0.0.1

注意:如果有“//”,请删除 // 之前$cfg['Servers'][$i]['host']

我又检查了一遍http://localhost/phpmyadmin/

Mysqli 说:

“phpMyAdmin尝试连接到MySQL服务器和服务器 拒绝连接。您应该检查主机、用户名和 密码,并确保它们对应于 MySQL服务器管理员提供的信息。

我再次打开,我发现config.inc.php

$cfg['Servers'][$i]['password'] =

用您的密码填写密码

它对我有用。它也可能对你有用。

评论

0赞 dadan 7/10/2017
为我节省大量时间
1赞 ImFarhad 10/4/2018
截至 2018 年 10 月,MAMP 路径应为 /Applications/MAMP/bin/phpMyAdmin/config.inc.php。它像魅力一样工作:-)
-3赞 fsalazar_sch 1/19/2018 #5

如果上述解决方案不起作用,请尝试将默认 por 从 3306 更改为另一个(即 3307)

评论

0赞 Abdulla Nilam 2/27/2021
这肯定与端口无关
28赞 Abdulla Nilam 5/8/2018 #6

也许您的 SQL Server 已停止。

sudo /etc/init.d/mysql start

sudo service mysqld start # older versions
sudo service mysql start # latest versions

并用于检查状态。service mysql status


继续运行 MySQL。

用:

sudo systemctl enable MySQL # older versions
sudo systemctl start mysql.service # latest versions

评论

3赞 GAV 1/16/2019
服务 mysqld 重启
0赞 COS 11/5/2019
它对我有用,但最大的问题是它为什么停止?因为我经常得到这个。
0赞 Abdulla Nilam 7/13/2020
@Komi用于继续运行 MySQL。对不起,回复晚了。我完全错过了这一点。sudo systemctl enable mysql
5赞 AbelSurace 5/12/2018 #7

首先,确保 mysql 服务正在运行:

ps elf|grep mysql

如果正在运行,您将看到如下输出:

4 S root      9642     1  0  80   0 -  2859 do_wai 23:08 pts/0    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/tomcat-machine.local.pid
4 S mysql     9716  9642  0  80   0 - 200986 poll_s 23:08 pts/0   00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/tomcat-machine.local.err --pid-file=/var/lib/mysql/tomcat-machine.local.pid

然后在 config.inc.php 中将 localhost 更改为 127.0.0.1

$cfg['Servers'][$i]['host'] = '127.0.0.1';

“root”用户的默认密码为空 “” 不要为密码键入任何内容

如果它不允许空密码,您需要再次编辑config.inc.php并更改:

$cfg['Servers'][$i]['AllowNoPassword'] = true;

问题是配置设置和MySQL未运行的组合。这就是帮助我修复此错误的原因。

9赞 Ketan Yekale 9/21/2018 #8

我今天使用以下步骤解决了这个问题:

  1. 如果 phpMyadmin 目录中不存在config.inc.php请config.sample.inc.php复制到config.inc.php。

  2. 将套接字添加到/* Server parameters */

    $cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';
    
  3. 保存文件并通过 url 访问 phpmyadmin。

如果您使用的是 mysql 8.0.12,则应使用旧密码加密,因为 php 客户端不支持强加密。enter image description here

评论

0赞 Sebj 9/16/2019
绝对是macOS用户的最佳答案!
0赞 Sultanos 11/12/2019
在使用从 HOMEBREW 安装的 php 和 httpd 时,我不得不使用旧的密码加密来使其工作,在此之前使用来自 Macos Catalina 的原生 PHP 和 httpd,我不需要更改它,所以当我从 homebrew 重新安装 PHP 和 HTTPD 时,我失去了连接......谢谢你的回答
31赞 Siraj Alam 10/6/2018 #9

这对我有用。

config.sample.inc.php

改变

$cfg['Servers'][$i]['host'] = 'localhost';

$cfg['Servers'][$i]['host'] = '127.0.0.1';

救。

然后重命名文件并从名称中删除示例

评论

1赞 til 1/31/2023
感谢您指出,请确保从可以写入的名称中删除示例。
1赞 Lamech Desai 6/25/2019 #10

如果您使用的是 archlinux 或 Ubuntu,只需键入以下命令:

cd /opt/lampp/phpmyadmin

然后

sudo gedit config.inc.php

然后,当您访问该文件时,请查找以下脚本,

//$cfg['Servers'][$i]['host'] ='localhost'

删除“//”,使其保持如下所示:

$cfg['Servers'][$i]['host'] ='localhost'

然后将“localhost”更改为“127.0.0.1”,脚本应如下所示:

$cfg['Servers'][$i]['host'] ='127.0.0.1'

返回浏览器并键入 http://127.0.0.1/phpmyadmin/

如果它仍然拒绝

您应该检查配置中的主机,用户名和密码,并确保它们与MySQL服务器管理员提供的信息相对应。

因此,然后返回您正在编辑config.inc.php的同一文件,并执行以下操作:

cd /opt/lampp/phpmyadmin

然后

sudo gedit config.inc.php

在下面搜索脚本

$cfg['Servers'][$i]['password'] =''

用您的 root 密码填写密码

$cfg['Servers'][$i]['password'] ='your_password'

它应该起作用。

评论

0赞 Rana Hyder 11/12/2022
-bash: cd: /opt/lamp/phpmyadmin: 没有这样的文件或目录
0赞 Cyborg 7/8/2019 #11

如果您的网站运行良好,现在出现意外错误(HY000/2002): No such file or directory

那么你不应该改变任何配置文件!

首先检查服务器error.log文件,对于 Nginx,它位于:

/var/log/nginx/error.log

或者对于 Apache,请尝试:

/var/log/apache2/error_log

就我而言,我可以看到 PHP 致命错误:nginx error.log中的内存不足。

解决方案:向服务器添加更多 RAM。


在升级/添加 RAM 之前,我尝试先重新启动 Web 服务器。 然后我摆脱了ERROR (HY000/2002) but got some ERROR 50X: Connection Error...

此时,我添加了 2GB RAM,重新启动了 Web 服务器,一切正常!

当 Web 服务器启动时,我注意到由于 200 个 PHP 脚本中的循环错误,200+ cron-jobs 被卡住了。

因此,请检查哪个脚本正在消耗内存。

-1赞 grantDEV 12/11/2019 #12

如果您使用的是 Mac OS 和 Brew,请尝试以下操作:

mkdir /usr/local/etc/my.cnf.d
1赞 Stephen Chen 1/7/2020 #13

我在 CentOS 上遇到过这个问题。

首先我试试这个

sudo service mysql restart

然后出现错误

Redirecting to /bin/systemctl restart mysql.service
Failed to restart mysql.service: Unit not found.

然后我找到了这个

命令这个解决我的问题

systemctl start mariadb.service
3赞 demenvil 1/24/2020 #14

试试就好

sudo service mysql restart

它对我有用

评论

0赞 Gulab Sagevadiya 3/29/2022
它会删除MySQL数据吗?还是只会开始?
0赞 demenvil 3/30/2022
您好,只需重新启动服务器
0赞 lortschi 4/14/2020 #15

我也有同样的问题。在我的道路上没有更多的定义。于是我开始搜索它:但找不到它。 我重新安装了mysql:(请在执行当前sql-server-version之前检查)。/etc/mysql/my.cnfmysqld.sockfind / -type s | grep mysqld.sockapt install mysql-server-5.7

这解决了我的问题。

0赞 Yogesh Wankhede 5/19/2020 #16
mysqli_connect(): (HY000/2002): No such file or directory

我在 debian9 VM 上遇到了同样的问题,我试图重新启动 MySQL,但它没有解决问题,之后我增加了 RAM(我减少了)并且它起作用了。

0赞 Arafat Hasan 9/1/2020 #17

如果您使用的是 SELinux,请查看此内容。

我也有同样的问题。我正在运行带有 SELinux 强制执行的 CentOS 8,尽管所有配置都已正确修复,但我还是收到了问题 () 中提到的错误。后来,在允许通过SELinux进行MySQL连接后,我摆脱了麻烦。mysqli_real_connect(): (HY000/2002): No such file or directory

使用以下命令检查 SELinux 状态:

sestatus

允许 Apache 通过 SELinux 连接数据库

setsebool httpd_can_network_connect_db 1

“使用”选项使更改永久化。如果没有此选项,布尔值将在重新启动时重置为 0。-P

setsebool -P httpd_can_network_connect_db 1
-2赞 Abhiram Das 10/24/2020 #18

在 linux 中,只需执行

sudo systemctl stop mysql

sudo systemctl start mysql

为我工作

评论

0赞 Abdulla Nilam 2/27/2021
这个答案已经在上面的多个帖子中出现,+1 >分
-1赞 Go3shom 12/14/2022 #19

我正在使用 Ubuntu 22.04,我发现 mysql 服务不起作用。 运行此命令后,它运行良好

sudo service mysql start

希望它对某人有所帮助

评论

0赞 Your Common Sense 12/14/2022
当然,它有所帮助,但已经提出过几次,包括最重要的答案之一,stackoverflow.com/a/50227592
0赞 Go3shom 12/15/2022
没错,我在答案中没有注意到