mysqli_real_connect(): (HY000/2002): No such file or directory
MacOS上的PhpMyAdmin错误。我想回答,我真的不知道该怎么解决。
Answers:
在/etc/phpmyadmin/config.inc.php中将localhost更改为127.0.0.1
$cfg['Servers'][$i]['host'] = '127.0.0.1';
这样做的原因是,如果您使用本地主机,则pma尝试连接到mysql.socket。如果您使用127.0.0.1,则PMA会建立TCP连接,该连接应该正常工作。
localhost
。
localhost
,则必须将MySQL配置为侦听套接字而不是TCP / IP。当您的数据库位于同一台计算机上时,我总是建议您这样做。
我以前尝试过
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'] =
用您的密码填写密码
它为我工作。它也可能为您工作。
sudo /etc/init.d/mysql start
要么
sudo service mysqld start
并service mysql status
用来检查状态
编辑添加评论:
使用:
sudo systemctl enable mysql
保持运行MySQL。
sudo systemctl enable mysql
保持运行MySQL。这么晚才回复很抱歉。我完全错过了。
我只是想使用Terminal在Mac上运行一些PHPUnit测试。我想测试的某些类必须连接由PHPMyAdmin创建和管理的MySQL DB,而我正在使用的Web应用程序在localhost中运行良好。因此,当我运行该测试用例时,在终端上出现以下错误:
mysqli_connect(): (HY000/2002): No such file or directory
因此,由于痒,我不得不解决它并运行我的测试,我搜索了几个SO Q&A线程并进行了尝试。各种变化对我来说都是有效的。
config.inc.php
与PHPMyAdmin相关的文件。$cfg['Servers'][$i]['host']
大部分行,默认情况下此行可能已被注释掉,如果是这样,请取消注释。$cfg['Servers'][$i]['host'] = '127.0.0.1';
$host
将mysqli_connect()
方法中的参数值更改为以下内容:$_connection = mysqli_connect(**"localhost: 3306"**, $_mysql_username, $_mysql_password, $_database);
注意:这3306
是我的MySQL端口号,这是它的默认端口号。在执行以下步骤之前,您最好检查一下实际的MySQL端口号。
就这样。对我来说,只有这些步骤才能奏效,而没有别的。我运行了单元测试,它运行正常,并且根据测试,数据库数据也已正确更新。
我可能发现的最接近的原因是它起作用,因为有时该mysqli_connect
方法需要数据库的可用套接字(数据库主机的IP地址以及端口号)。因此,如果您已注释掉该$cfg['Servers'][$i]['host'] = '127.0.0.1';
行或将“ localhost”设置为其中的值,则它将忽略端口号。但是,如果要使用套接字,则必须使用“ 127.0.0.1”或真实主机名。(对我来说,这似乎与我们实际使用的默认端口号无关,我们必须执行上述步骤。)阅读PHPMyAdmin的以下链接以获取更多详细信息。
希望这可能对其他人有所帮助。
干杯!
首先,确保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无法运行的结合。这就是帮助我解决此错误的原因。
如果您的网站运行正常,现在出现意外错误:(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。
我尝试先重启Web服务器,然后再升级/添加RAM。然后我摆脱了ERROR (HY000/2002) but got some ERROR 50X: Connection Error...
此时,我添加了2GB RAM,重新启动了Web服务器,并且一切正常!
当Web服务器启动时,我注意到由于1个PHP脚本中的循环错误而导致200多个cron-jobs卡住了。
因此,请检查哪个脚本正在占用内存。
mysqli_connect(): (HY000/2002): No such file or directory
我在debian9 VM上也遇到了同样的问题,我尝试重新启动MySQL,但是并没有解决问题,此后我增加了RAM(减少了)并开始工作。
我有同样的问题。我在运行带有SELinux强制功能的CentOS 8时,mysqli_real_connect(): (HY000/2002): No such file or directory
尽管正确配置了所有配置,但遇到了问题()中提到的错误。在允许通过SELinux进行MySQL连接之后,我后来摆脱了麻烦。
使用以下命令检查SELinux状态:
sestatus
允许Apache通过SELinux连接数据库
setsebool httpd_can_network_connect_db 1
使用-P
选项使更改永久生效。如果没有此选项,则布尔值将在重新启动时重置为0。
setsebool -P httpd_can_network_connect_db 1
在linux中做
sudo systemctl stop mysql
sudo systemctl start mysql
为我工作
如果您使用的是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'
它应该工作。
如果上述解决方案不起作用,请尝试将默认por从3306更改为另一个(即3307)