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

Php MySQL连接不工作:2002没有这样的文件或目录,php,mysql,connection,Php,Mysql,Connection,我正在试着建立WordPress。我有Apache和MySQL运行,帐户和数据库都已设置好。我试图建立一个简单的连接: <?php $conn = mysql_connect('localhost', 'USER', 'PASSWORD'); if(!$conn) { echo 'Error: ' . mysql_errno() . ' - ' . mysql_error(); } ?> 我总是这样想: 错误:2002-没有此类文件或 目

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

<?php
    $conn = mysql_connect('localhost', 'USER', 'PASSWORD');
    if(!$conn) {
        echo 'Error: ' . mysql_errno() . ' - ' . mysql_error();
    }
?>

我总是这样想:

错误:2002-没有此类文件或 目录

它可能在谈论什么文件或目录

我在一个OSX雪豹上,使用内置的Apache。我使用x86_64 dmg安装了MySQL


更新:我发现套接字位于/tmp/mysql.sock,因此在php.ini中,我将所有出现的错误路径替换为该路径。

我将检查您的php.ini文件,验证mysql.default\u套接字设置是否正确,并验证您的mysqld是否正确配置了它可以访问的套接字文件。典型的默认值是“/tmp/mysql.sock”。

这并不是说它对您有多大帮助,但在mysql(甚至)中,错误代码2002表示“无法通过套接字[套接字名称]连接到本地mysql服务器”,因此这可能会告诉您更多信息。

首先,确保mysql正在运行。命令:mysqldstart

如果仍然无法连接,则: 你的/etc/my.cnf是什么样子的?(或/etc/msyql/my.cnf)

其他两篇文章是正确的,因为2002年是一个套接字错误,所以您需要检查套接字


关于设置LAMP的一个很好的教程是:

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

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

mysql.default_socket
成功了

mysql.default_socket = /path/to/mysql.sock

我有一个类似的问题,并且能够通过使用
127.0.0.1
而不是
localhost
来解决它


这可能意味着我的主机设置出了一些问题,但这个快速修复让我马上就要开始了。

这是针对Mac OS X的,带有本机安装的Apache HTTP自定义安装的MySQL

sudo cp /etc/php.ini.default /etc/php.ini
sudo vi /etc/php.ini
答案是基于@alec gorge的出色响应,但由于我必须在谷歌上搜索一些特定的更改,以便在我的配置中配置它,主要是Mac OS X-specific,为了完整性,我想我应该在这里添加它

启用对Apache HTTP的PHP5支持 确保在
/etc/apache2/httpd.conf
中启用了PHP5支持

使用
sudo vi/etc/apache2/httpd.conf
(在询问时输入密码)编辑文件,并取消注释(从开头删除
)以加载php5_模块

LoadModule php5_module libexec/apache2/libphp5.so
使用
sudo apachectl Start
启动Apache HTTP(如果已经启动并且需要重新启动才能重新读取配置文件,则使用
restart

确保
/var/log/apache2/error\u log
包含一行内容,告诉您php5\u模块已启用-您应该看到
PHP/5.3.15
(或类似内容)

查找套接字文件的名称 当MySQL启动并运行时(使用
/bin/mysqld\u safe
),控制台上应该会打印出调试行,告诉您在哪里可以找到日志文件。请注意文件名中的主机名-
localhost
(在我的例子中)-这可能与您的配置不同

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

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
查找套接字文件的名称-它应该是最后一行

$ 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
中使用的socket文件

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

show variables like '%socket%';
使用MySQL支持配置PHP5-/etc/php.ini 说到php.ini

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

sudo cp /etc/php.ini.default /etc/php.ini
sudo vi /etc/php.ini
打开
/etc/php.ini
并查找mysql.default\u socket

sudo cp /etc/php.ini.default /etc/php.ini
sudo vi /etc/php.ini
mysql.default\u socket
的默认值是
/var/mysql/mysql.sock
。您应该将其更改为前面提到的值—在我的例子中是
/tmp/mysql.sock

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

mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
最后核查 重新启动apachehttp

sudo apachectl restart 

如果没有与PHP5相关的错误,请检查日志。没有错误意味着您已经完成了,PHP5和MySQL应该可以正常工作。恭喜你

我也遇到了这个问题,然后我将“localhost”修改为“127.0.0.1”,它可以工作。

我也遇到了类似的问题。
基本上,这里的问题是可能有两个mysql实例在运行。
A) 一个在/etc/init.d运行
B) 安装在/opt/灯上的灯
解决方案:
步骤1:-使用commnad“Find/| grep mysqld”查找所有正在运行的mysql实例
步骤2:-使用服务mysql stop关闭在/etc/init.d运行的服务
步骤3:-使用/opt/Lamp/Lamp Restart重新启动Lamp服务


你应该准备好了:)

在我的情况下,我的mysqli\u connect有问题
当我想连接时
mysqli\u connect('localhost','myuser','mypassword')

mysqli\u connect\u error()返回此错误“没有这样的文件或目录”

这对我有用
mysqli\u connect('localhost:3306','myuser','mypassword')

将配置文件(db connection)中的'localhost'替换为'127.0.0.1'有帮助

错误2002意味着MySQL无法通过套接字文件(例如
/tmp/MySQL.sock
)连接到本地数据库服务器

要查找套接字文件的位置,请运行:

mysql_config --socket
然后再次检查应用程序是否使用了正确的Unix套接字文件,或者改为通过TCP/IP端口连接

然后再次检查您的PHP是否具有正确的MySQL套接字设置:

php -i | grep mysql.default_socket
并确保文件exi
netstat -ln | grep -o -m 1 '/.*mysql.sock'
php -r 'echo ini_get("mysql.default_socket") . "\n";'
sudo ln -s /actualpath/mysql.sock /phppath/mysql.sock
sudo mkdir -p /var/mysql
mysqli.default_socket
mysql.default_socket = /path/to/mysql.sock
service mysql restart
[mysqld]
innodb_force_recovery = 1
sudo apt-get install mysql-server