首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MySQL连接不工作: 2002没有这样的文件或目录

MySQL连接不工作: 2002没有这样的文件或目录
EN

Stack Overflow用户
提问于 2009-11-05 05:16:45
回答 22查看 351K关注 0票数 112

我在试着设置WordPress。我已经运行了Apache和MySQL,帐户和数据库也都设置好了。我试着建立一个简单的连接:

代码语言:javascript
复制
<?php
    $conn = mysql_connect('localhost', 'USER', 'PASSWORD');
    if(!$conn) {
        echo 'Error: ' . mysql_errno() . ' - ' . mysql_error();
    }
?>

我总是得到这样的信息:

错误: 2002 -没有这样的文件或目录

它可能指的是什么文件或目录?

我使用的是OS Leopard,使用的是内置的Apache。我使用x86_64 dmg安装了MySQL。

更新:我发现套接字在/tmp/mysql.sock,所以在php.ini中,我用它替换了所有出现错误路径的地方。

EN

回答 22

Stack Overflow用户

回答已采纳

发布于 2009-11-05 05:28:41

如果您使用Linux: mysql.sock文件的路径是错误的。这通常是因为您使用的是(LAMPP) XAMPP,而它不在/tmp/mysql.sock中

打开php.ini文件并找到以下行:

代码语言:javascript
复制
mysql.default_socket

并让它成为

代码语言:javascript
复制
mysql.default_socket = /path/to/mysql.sock
票数 104
EN

Stack Overflow用户

发布于 2011-08-06 00:39:04

我也遇到过类似的问题,并通过使用127.0.0.1而不是localhost来解决我的mysql。

这可能意味着我的主机设置中出现了一些错误,但这个快速修复方法正是我现在要做的。

票数 171
EN

Stack Overflow用户

发布于 2013-03-10 02:58:26

这是针对Apache 的,带有原生安装的 HTTP和自定义安装的MySQL。

答案是基于@alec-gorge的出色响应,但由于我必须在google上搜索一些特定的更改才能在我的配置中对其进行配置,主要是特定于Mac OS X的配置,为了完整性,我认为我应该在这里添加它。

启用对Apache HTTP的PHP5支持

确保在/etc/apache2/httpd.conf中启用了PHP5支持。

使用sudo vi /etc/apache2/httpd.conf编辑文件(要求输入密码),并取消注释(从开头删除; )以加载php5_module模块。

代码语言:javascript
复制
LoadModule php5_module libexec/apache2/libphp5.so

使用sudo apachectl start启动Apache HTTP (如果Apache HTTP已经启动,需要重新启动它才能重新读取配置文件,则使用restart启动)。

确保/var/log/apache2/error_log包含一行告诉您php5_module已启用的行-您应该看到PHP/5.3.15 (或类似的内容)。

代码语言:javascript
复制
[notice] Apache/2.2.22 (Unix) DAV/2 PHP/5.3.15 with Suhosin-Patch configured -- resuming normal operations

查找套接字文件的名称

当MySQL启动并运行(使用./bin/mysqld_safe)时,控制台上应该打印出调试行,告诉您在哪里可以找到日志文件。请注意文件名中的主机名-在我的示例中为localhost -根据您的配置可能会有所不同。

Logging to之后的文件很重要。这就是MySQL记录其工作的地方。

代码语言:javascript
复制
130309 12:17:59 mysqld_safe Logging to '/Users/jacek/apps/mysql/data/localhost.err'.
130309 12:17:59 mysqld_safe Starting mysqld daemon with databases from /Users/jacek/apps/mysql/data

打开localhost.err文件(同样,您的文件的名称可能会有所不同),例如tail -1 /Users/jacek/apps/mysql/data/localhost.err,以查找套接字文件的名称-它应该是最后一行。

代码语言:javascript
复制
$ tail -1 /Users/jacek/apps/mysql/data/localhost.err
Version: '5.5.27'  socket: '/tmp/mysql.sock'  port: 3306  MySQL Community Server (GPL)

注意socket:部分--这是您应该在php.ini中使用的套接字文件。

还有另一种方法(有人说是一种更简单的方法)可以通过登录到MySQL并运行以下命令来确定套接字文件名的位置:

代码语言:javascript
复制
show variables like '%socket%';

使用MySQL支持配置PHP5 - /etc/php.ini

说到php.ini。

/etc目录下有一个/etc/php.ini.default文件。将其复制到/etc/php.ini.

代码语言:javascript
复制
sudo cp /etc/php.ini.default /etc/php.ini

打开/etc/php.ini并查找mysql.default_socket.

代码语言:javascript
复制
sudo vi /etc/php.ini

mysql.default_socket的默认值为/var/mysql/mysql.sock。您应该将其更改为前面提到的值-在我的示例中是/tmp/mysql.sock

替换/etc/php.ini文件以反映套接字文件的名称:

代码语言:javascript
复制
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

最终验证

重新启动Apache HTTP。

代码语言:javascript
复制
sudo apachectl restart 

如果没有与PHP5相关的错误,请检查日志。没有错误意味着您已经完成了,使用MySQL的PHP5应该可以很好地工作。恭喜!

票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1676688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档