警告:mysqli :: __ construct():( HY000 / 2002):没有这样的文件或目录

我花了几天的时间才想办法解决这个问题... 我在运行Mojave(10.14.3)的Mac OS上设置了Apache Web服务器(版本2.4.34),并安装了当前版本的MySQL Community Server(8.0.15)。 正如我所能确定的(从命令行),两者都运行良好。 我已经安装了PHP 7.1.23。 当我使用以下代码创建.php文件并将其放在我的Sites目录中,然后在Safari中转到http://localhost/~dave/hello.php时,出现此错误::

"Warning: mysqli::__construct(): (HY000/2002): No such file or directory in /Users/dave/Sites/hello.php on line 7 Connection failed: No such file or directory".

hello.php中的代码:

<?php
$servername = "localhost";
$username = "dave";
$password = "*****";

//Create connection
$conn = new mysqli($servername, $username, $password);

//Check connection
if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>

我已经尝试了所有我能想到的一切,包括其他两篇类似的文章中的建议(这一篇:我的数据库用户存在,但是我仍然得到(HY000 / 2002):没有这样的文件或目录,而这一篇:PHP警告: mysqli :: construct():(HY000 / 2002):没有这样的文件或目录(Debian GNU / Linux 9),并且我无法使用php连接到MySQl。 特别是,我检查了php info页面,并给出了mysqli的套接字为 /tmp/mysql.sock。 我尝试通过添加每个套接字(代替空值)来更改php.ini.default文件,但两个都不起作用(仍然产生相同的错误)。 我以为2002 MySQL套接字错误可能是问题所在,所以我做了一个符号链接is:

sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

但是这样做只会产生一个新的错误:

Warning: mysqli::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] in /Users/dave/Sites/hello.php on line 7

Warning: mysqli::__construct(): (HY000/2054): The server requested authentication method unknown to the client in /Users/dave/Sites/hello.php on line 7 Connection failed: The server requested authentication method unknown to the client

所以我删除了符号链接...并返回到原始错误。 我还尝试使用IP地址127.0.0.1以及其他问题线程建议的“ localhost:3306”替换“ localhost”。 这里也没有任何作用。 请帮助我,我对这种计算机/网页设计的使用是陌生的,我没有明显的选择(谷歌/可理解)。s.

doulu5109
doulu5109 另外,请注意MacOS上默认安装的apache和php(不知何故)很棘手(我记得大约六个月前)。我也非常推荐MAMP在Mac上进行开发-即使在任何其他操作系统上,我总是喜欢自己手动安装和配置Web和数据库服务器。
一年多之前 回复
duanjia7912
duanjia7912 几天前我遇到了类似的问题(在Debian上,Apache和MariaDB)。我测试了一个软件,令人惊讶的是,它完全删除了包含MariaDB日志文件的目录(var/log/mysql)。但是这个目录还包含一个名为mariadb-bin.index的文件。我重新创建了目录,并给了它相应的权限。但是,无论我进一步尝试了什么,都无法(正确)创建.index文件。我不得不重新安装数据库服务器...所以,检查你的var/log/mysql目录。
一年多之前 回复
duan198299
duan198299 我只能看到一个MySQLi块,并且套接字以本地和主服务器的/var/mysql/mysql.sock形式给出。当我在mysql中显示变量时(在终端中)它说套接字值是/tmp/mysql.sock。我如何安装php-mysql?
一年多之前 回复
douxuelv7755
douxuelv7755 MySQL和MySQLi中列出的套接字,至少在我的系统上是相同的。我认为他们与众不同是不对的。符号链接可能不会对此进行排序。一般来说你需要安装php-mysql才能让php与mysql交谈,所以我不认为你一直在关注最好的教程。
一年多之前 回复
douxian1923
douxian1923 在php文件中执行phpinfo()并显示MySQL和MySQLi块的内容。
一年多之前 回复
duan0065626385
duan0065626385 如果您的目标是学习服务器管理员,那么您就是在正确的轨道上。如果你的目标是学习编码,那么你将有更轻松的时间使用MAMP:mamp.info/en
一年多之前 回复
duanchuang6978
duanchuang6978 我不明白你的问题对不起,这里总新手。
一年多之前 回复
dongxi5423
dongxi5423 我会尽力回答。Apache:实际上,我认为当我升级到Mojave时已经安装了Apache和php。然后,我根据discussion.apple.com/docs/DOC-13841和dyclassroom.com/howto-mac/...设置了Apache。MySQL的。我下载了.dmg压缩文件夹并按照MySQL用户手册说明安装了它。我检查了服务器是否在Mac首选项中运行,然后可以从命令行使用mysql,下面跟着教程没问题。我也可以加载DATALOCALINFILEOK。
一年多之前 回复
douli1854
douli1854 您如何验证MySQL实际上正在运行并接受连接?它接受套接字连接吗?你是在docker容器内运行东西还是在同一台主机上运行的东西?
一年多之前 回复
douxuexiao1748
douxuexiao1748 您尚未描述安装过程中所采取的步骤。说“我已经安装了Apache和Mysql”是一回事。但是有各种方法可以安装和配置这些,所以你需要描述你的确切步骤,这样我们才能看到你出错的地方。还为什么要安装它们?为什么不直接使用MAMP?您是否也在StackOverflow/Google上搜索该错误?例如。stackoverflow.com/questions/13769504/...。你提到“其他两个类似的帖子”但你没有链接到它们。如果你这样做会有所帮助。
一年多之前 回复

1个回答



我从我所在地区的一些本地技术人员那里得到了一些帮助,事实证明修复套接字错误是第一步,就像我一样 试图在上面做。 我最终采用这种方式,使用名词解决方案:</ p>

警告:mysql_connect():[2002]没有这样的文件或目录(试图通过unix:///tmp/mysql.sock连接) / a> </ p>

然后生成第二条错误消息(与我的问题相同,这里再次):</ p>

mysqli :: __ construct() :服务器在第7行的/Users/dave/Sites/hello.php中请求客户端未知的身份验证方法[caching_sha2_password] </ p>

警告:mysqli :: __ construct():( HY000 / 2054):服务器在第7行的/Users/dave/Sites/hello.php中请求客户端未知的身份验证方法</ p>

这是由基于SQL的解决方案修复的(2018年6月9日) 回答这个问题:</ p>

php mysqli_connect:authentication m 客户端未知的方法[caching_sha2_password] </ p>

此SQL语句只是从终端在MySQL中运行。 重新启动Apache服务器之后,我重新加载了Safari中的.php文件,这导致了使用PHP成功连接MySQL的mysqli。 我也尝试过PDO连接,这也很有用。</ p>
</ div>

展开原文

原文

I got some help from some local tech guys in my area and it turns out that fixing the socket error was the first step, like I tried to do above. I eventually did it this way, using the solution by noun:

Warning: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in

The second error message was then generated (same one as in my question, here again):

mysqli::__construct(): The server requested authentication method unknown to the client [caching_sha2_password] in /Users/dave/Sites/hello.php on line 7

Warning: mysqli::__construct(): (HY000/2054): The server requested authentication method unknown to the client in /Users/dave/Sites/hello.php on line 7

This was fixed by the SQL-based solution (June 9 2018 answer) to this question:

php mysqli_connect: authentication method unknown to the client [caching_sha2_password]

This SQL statement was simply run in MySQL from the terminal. After restarting the Apache server I reloaded the .php file in Safari and this resulted in a successful mysqli connection to MySQL with PHP. I also tried a PDO connection and this also worked.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐