提问人:luigi 提问时间:1/27/2017 最后编辑:Dharmanluigi 更新时间:1/18/2023 访问量:306644
mysqli_real_connect(): (HY000/2002): 没有这样的文件或目录
mysqli_real_connect(): (HY000/2002): No such file or directory
问:
mysqli_real_connect(): (HY000/2002): No such file or directory
MacOS上的PhpMyAdmin错误。我想要答案,我真的不知道我需要做些什么来解决这个问题。
答:
在 /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 连接。
评论
localhost
localhost
您只需要将ib_logfile0重命名为 ib_logfile_0 和 ib_logfile_1 ib_logfile1。那么你的问题就会得到解决。
评论
mysqli_connect(): (HY000/2002): 没有这样的文件或目录
背景:
我只是想使用终端在我的 Mac 上运行一些 PHPUnit 测试。 我想测试的一些类必须连接由 PHPMyAdmin 创建和管理的 MySQL 数据库,并且我正在使用的 Web 应用程序在 localhost 中运行良好。因此,当我运行该测试用例时,我的终端上出现了以下错误:
mysqli_connect(): (HY000/2002): No such file or directory
溶液:
因此,由于瘙痒,我不得不解决它并运行我的测试,我在几个 SO Q&A 线程中搜索并尝试了一下。这些变化的组合对我有用。
- 找到与 PHPMyAdmin 相关的文件。
config.inc.php
- 找到该行,该行可能已被默认注释掉,如果是这样,请取消注释。
$cfg['Servers'][$i]['host']
- 并将该行替换为以下内容:
$cfg['Servers'][$i]['host'] = '127.0.0.1';
- 保存它并从 XAMPP 控制面板 (manager-osx) 重新启动 MySQL 数据库。
- 将方法中的参数值更改为以下内容:
$host
mysqli_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';
希望这可能对其他人有所帮助。
干杯!
我之前尝试过这个
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'] =
用您的密码填写密码
它对我有用。它也可能对你有用。
评论
如果上述解决方案不起作用,请尝试将默认 por 从 3306 更改为另一个(即 3307)
评论
也许您的 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
评论
sudo systemctl enable mysql
首先,确保 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未运行的组合。这就是帮助我修复此错误的原因。
我今天使用以下步骤解决了这个问题:
如果 phpMyadmin 目录中不存在config.inc.php请config.sample.inc.php复制到config.inc.php。
将套接字添加到
/* Server parameters */
$cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';
保存文件并通过 url 访问 phpmyadmin。
如果您使用的是 mysql 8.0.12,则应使用旧密码加密,因为 php 客户端不支持强加密。
评论
这对我有用。
探config.sample.inc.php
改变
$cfg['Servers'][$i]['host'] = 'localhost';
到
$cfg['Servers'][$i]['host'] = '127.0.0.1';
救。
然后重命名文件并从名称中删除示例。
评论
如果您使用的是 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'
它应该起作用。
评论
如果您的网站运行良好,现在出现意外错误:(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 被卡住了。
因此,请检查哪个脚本正在消耗内存。
如果您使用的是 Mac OS 和 Brew,请尝试以下操作:
mkdir /usr/local/etc/my.cnf.d
我在 CentOS 上遇到过这个问题。
首先我试试这个
sudo service mysql restart
然后出现错误
Redirecting to /bin/systemctl restart mysql.service
Failed to restart mysql.service: Unit not found.
然后我找到了这个
命令这个解决我的问题
systemctl start mariadb.service
试试就好
sudo service mysql restart
它对我有用
评论
我也有同样的问题。在我的道路上没有更多的定义。于是我开始搜索它:但找不到它。
我重新安装了mysql:(请在执行当前sql-server-version之前检查)。/etc/mysql/my.cnf
mysqld.sock
find / -type s | grep mysqld.sock
apt install mysql-server-5.7
这解决了我的问题。
mysqli_connect(): (HY000/2002): No such file or directory
我在 debian9 VM 上遇到了同样的问题,我试图重新启动 MySQL,但它没有解决问题,之后我增加了 RAM(我减少了)并且它起作用了。
如果您使用的是 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
在 linux 中,只需执行
sudo systemctl stop mysql
sudo systemctl start mysql
为我工作
评论
我正在使用 Ubuntu 22.04,我发现 mysql 服务不起作用。 运行此命令后,它运行良好
sudo service mysql start
希望它对某人有所帮助
评论