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

时间:2017-01-26 19:11:43

标签: macos mysqli phpmyadmin

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

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

18 个答案:

答案 0 :(得分:71)

在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连接。

答案 1 :(得分:16)

我之前尝试过这个

  

cd / opt / lampp / phpmyadmin

然后

  

gedit config.inc.php

找到这个,

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

如果localhost将其更改为127.0.0.1

  

注意:如果有' //'在$cfg['Servers'][$i]['host']

之前删除//

我再次检查http://localhost/phpmyadmin/

mysqli说:

  

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

我再次开放config.inc.php   我找到了

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

使用密码填写密码

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

答案 2 :(得分:8)

  

phpmyadmin 2018年10月

找到config.sample.inc.php

更改

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

进入

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

保存。

然后重命名文件,并从名称中删除 sample

答案 3 :(得分:7)

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. 并用以下内容替换该行:
  4. $cfg['Servers'][$i]['host'] = '127.0.0.1';

    1. 保存并从XAMPP控制面板(manager-osx)重新启动MySQL数据库。
    2. $host方法中的mysqli_connect()参数值更改为以下内容:
    3. $_connection = mysqli_connect(**"localhost: 3306"**, $_mysql_username, $_mysql_password, $_database);

      注意:3306是我的MySQL端口号,这是默认值。在执行这些步骤之前,您应该更好地检查实际的MySQL端口号是什么。

      这就是全部。对我来说,只有这些步骤才有效,没有别的。我运行了单元测试,它工作正常,DB数据也根据测试正确更新。

      为什么会这样:

      我能找到的最接近的原因是它有效,因为有时mysqli_connect方法需要数据库的工作套接字(数据库主机的IP地址和端口号)。因此,如果您已注释掉$cfg['Servers'][$i]['host'] = '127.0.0.1';行或已设置' localhost'作为其中的值,它忽略端口号。但是,如果你想使用套接字,那么你必须使用' 127.0.0.1'或真正的主机名。 (对我而言,无论我们真正拥有哪个默认端口号,我们都必须执行上述步骤。)阅读以下link of PHPMyAdmin以获取更多详细信息。

      希望这对其他人有帮助。

      干杯!

答案 4 :(得分:7)

可能您的SQL服务器已停止

sudo /etc/init.d/mysql start

答案 5 :(得分:2)

我今天通过以下步骤解决了该问题:

  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

答案 6 :(得分:1)

首先确保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没有运行的组合。这有助于我解决这个错误。

答案 7 :(得分:1)

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

首先,我尝试

sudo service mysql restart

然后显示错误

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

然后我发现了this

命令这可以解决我的问题

systemctl start mariadb.service

答案 8 :(得分:0)

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

$ cd / opt / lampp / phpmyadmin

然后

$ sudo gedit config.inc.php

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

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

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

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

然后将“ 本地主机”更改为“ 127.0.0.1 ”,脚本应如下图所示:

$ cfg ['服务器'] [$ i] ['主机'] ='127.0.0.1'

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

如果仍然拒绝

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

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

$ cd / opt / lampp / phpmyadmin

然后

$ sudo gedit config.inc.php

搜索以下脚本

$ cfg ['服务器'] [$ i] ['密码'] =''

使用您的root密码填充密码

$ cfg ['服务器'] [$ i] ['密码'] ='您的密码'

它应该工作。快乐的黑客朋友。

答案 9 :(得分:0)

在linux中只需

sudo systemctl stop mysql

sudo systemctl start mysql

为我工作

答案 10 :(得分:0)

如果您使用的是SELinux,请检查一下。

我有同样的问题。我在运行带有SELinux强制功能的CentOS 8时,尽管正确配置了所有配置,但遇到了问题(mysqli_real_connect(): (HY000/2002): No such file or directory中提到的错误。允许MySQL通过SELinux连接之后,我后来摆脱了麻烦。

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

sestatus

允许Apache通过SELinux连接数据库

setsebool httpd_can_network_connect_db 1

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

setsebool -P httpd_can_network_connect_db 1

答案 11 :(得分:0)

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

我在debian9 VM上也遇到了同样的问题,我尝试重新启动MySQL,但是并没有解决问题,在那之后我增加了RAM(减少了)并开始工作。

答案 12 :(得分:0)

我有同样的问题。在我的/etc/mysql/my.cnf中,没有更多定义mysqld.sock的路径。因此,我开始搜索以找到find / -type s | grep mysqld.sock,但找不到它。 我用apt install mysql-server-5.7重新安装了mysql(请在执行当前的sql-server-version之前检查)。

这解决了我的问题。

答案 13 :(得分:0)

尝试

sudo service mysql restart

对我有用

答案 14 :(得分:0)

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

mkdir /usr/local/etc/my.cnf.d

答案 15 :(得分:0)

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

然后您应该不要更改任何配置文件!

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

/var/log/nginx/error.log

或者对于Apache,请尝试:

/var/log/apache2/error_log

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

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


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

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

当Web服务器启动时,我发现由于1个PHP脚本中的循环错误而导致200多个cron-jobs卡住了。

所以请检查哪个脚本正在占用内存。

答案 16 :(得分:0)

如果以上解决方案无效,请尝试将默认por从3306更改为另一个(即3307)

答案 17 :(得分:-4)

您只需要将ib_logfile0和ib_logfile1重命名为ib_logfile_0和ib_logfile_1。然后你的问题就会解决。

相关问题