mysql_connect(): [2002] No such file or directory

在mac中搭建php的开发环境

1. apach ---- 推荐用MAMP。你只要把你的php文件/项目放入到htdocs(/Applications/MAMP/htdocs)目录下,启动mamp,输入localhost就可以直接看见你这个目录下的所有文件了。--由于这种相对简单,这里不再赘述,如果任何问题,欢迎联系交流。

2. nginx ---- 由于没有继承的工具,nginx相对apach的配置相对复杂。比如你需要下载mysql,下载php-fpm,甚至还需要用homebrew来安装。(我下面的说明都是基于homebrew安装的情况)在这里我简单的说明几点需要特别注意的情况:

2.1 nginx的配置

需要说明的是/usr/local/etc/nginx下的conf文件server的配置,fastcgi_param选项,注意当加上$document_root,如下面所示:实际上,下面的$document_root$fastcgi_script_name;是和fastcgi.conf里面的值一致。

server {
        listen       80;
        server_name  localhost; //指定你的域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /Users/megan/www/; // 指定你项目的路径
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache‘s document root
        # concurs with nginx‘s one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

2.2 MySQL的配置

本文是有mysql引发的,这里就简单的说说mysql的简单命令。

启动 -- mysql.server start

关闭 -- mysql.server stop

重启 -- mysql.server restart

连接 -- mysql -uroot 或者 mysql -uroot -p (这里是密码)

导入数据 -- source ../*.sql

2.3 php-fpm的配置

这玩意儿最郁闷的是我没有找到很好的重启和关闭的命令。比如nginx的启动用sudo nginx,关闭用sudo nginx -s -stop重启用sudo nginx -s reload. 可php-fpm我只会用sudo php-fpm来启动。关闭的方式简直是粗暴。

我首先用ps aux|grep php来查看有那些php进程在运行,然后执行kill php-fpm相关进程。比如下面这样的结果执行(sudo)kill 3870 3871 3872.再查看一次,你会发现这些进程没有了。(如果哪位同仁有更好的办法并能指点迷津,比女子将不胜感激)

[[email protected]:~]$ps aux|grep php
megan            1338   4.6  7.4  1824760 389504   ??  S    10:51AM  23:40.56 /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS/zend-eclipse-php -os macosx -ws cocoa -arch x86 -launcher /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS/zend-eclipse-php -name Zend Eclipse for PHP Developers --launcher.library /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS//../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx_1.1.200.v20120522-1813/eclipse_1503.so -startup /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS//../../../plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar --launcher.overrideVmargs -showlocation -launcher /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS/zend-eclipse-php -showlocation -data /Users/megan/www -launcher /Applications/zend-eclipse-php/zend-eclipse-php.app/Contents/MacOS/zend-eclipse-php -showlocation -keyring /Users/megan/.eclipse_keyring -showlocation -vm /System/Library/Frameworks/JavaVM.framework -vmargs -Xms128M -Xmx512M -Djava.awt.headless=true -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Xdock:icon=../Resources/Eclipse.icns -XX:MaxPermSize=256m
megan          3981   0.4  0.0  2442000    628 s001  S+    6:48PM   0:00.01 grep php
nobody         3872   0.0  0.2  2481552  12008   ??  S     5:57PM   0:05.74 php-fpm
nobody         3871   0.0  0.2  2481552  12748   ??  S     5:57PM   0:01.09 php-fpm
root           3870   0.0  0.0  2464912    592   ??  Ss    5:57PM   0:00.23 php-fpm

回到问题

其实这个问题很简单,只需要找到你的mysql.sock 然后回到你的php.ini修改一个配置就好了。主要是下面三行代码。

pdo_mysql.default_socket=/tmp/mysql.sock //如果使用的是zendframework,这个需要配置
// 如果使用的是opencart等并没有使用pdo的需要配置下面两项。
mysql.default_socket = /tmp/mysql.sock 

mysqli.default_socket =/tmp/mysql.sock

实际上只做了一件事,那就是将mysql.sock配置给default_socket。

其实这里最主要的问题是你怎么找到你的mysql.sock, 怎么找你的php.ini。玩了这么就的mac,除了做iOS开发,无论是玩java还是php还是其他,最郁闷的一件事情是找相关的配置文件。什么whereis,locate,which等都用了个遍,往往还是找不到文件,那种痛苦,不想多说。

找到php.ini最简单的办法--建一个文件,phpinfo()会让世界变得异常美好。

找到mysql.sock -- 你可能会使用mysqladmin viriables 查看mysql所有的参数,你或许发现mysql.sock的路径指向了/tmp/mysql.sock,可是你找不到那个文件,尽管你现实所有隐藏文件你还是看不到这个文件。

那么你可以执行sudo find / -name mysql.sock 它会告诉你,其实你的mysql.sock在private/tmp/mysql.sock这里。那么你可能会想用下面这行代码来建一个快捷方式。

ln -s /private/tmp/mysql.sock /tmp/mysql.sock

ok,是可以,或许它会提醒你这个文件已经存在了。没关系,不用理会它,尽管你在/tmp里面还是看不见mysql.sock。你只管用就行了。我也不知掉多到哪个我看不见的角落了。总之,有个mysql.sock的快捷方式在/tmp下面给你使用。

时间: 2024-11-14 08:02:59

mysql_connect(): [2002] No such file or directory的相关文章

mac 连接mysql提示 Warning: mysqli::real_connect(): (HY000/2002): No such file or directory

mac 连接mysql的时候提示 Warning: mysqli::real_connect(): (HY000/2002): No such file or directory [说明1]MAC下MYSQL的安装路径:/usr/local/mysql-5.5.28-osx10.6-x86 数据库的数据文件在该目录的data文件夹中: 命令文件在bin文件夹中. [说明2]通过终端打开MYSQL命令行的方法:/usr/local/mysql-5.5.28-osx10.6-x86/bin/mysq

Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] No such file or directory解决方法

今天用pdo连接mysql遇到一个奇怪的问题,host设为127.0.0.1可以连接成功,设为localhost就会报如下的错误: PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] No such file or directory' in /usr/share/nginx/html/test.php:2 Stack trace: #0 /usr/share/nginx

[Mac][phpMyAdmin] [2002] No such file or directory

我从phpMyAdmin的官网下载了最新版,将它解压到 /Library/WebServer/Documents 下,然后把文件夹改名 phpmyadmin . 接着输入在浏览器中输入 localhost/phpmyadmin/ ,填入用户名密码却提示  [2002] No such file or directory . 在网上找了一圈,似乎是 mysql.sock 的位置不对. 首先打开终端,找到 mysql.sock 的位置 sudo find / -name mysql.sock 结果如

laravel 报错SQLSTATE[HY000] [2002] No such file or directory

在mac中执行php artisan migrate时报错 SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = weifenxiao and table_name = migrations) [PDOException] SQLSTATE[HY000] [2002] No such file or directory

TP连接数据库报错:SQLSTATE[HY000] [2002] No such file or directory

连接数据库报错:“SQLSTATE[HY000] [2002] No such file or directory”. 出现这个问题的原因是PDO无法找到mysql.sock或者mysqld.sock.  解决方法1:找到相应的.sock文件,并设置php.ini文件中的pdo_mysql.default_socket的值为.sock文件的路径. pdo_mysql.default_socket= /tmp/mysqld.sock 然后重启Apache,或者nginx下重启php-fpm即可.

phpmyadmin提示mysqli_real_connect(): (HY000/2002): No such file or directory错误的解决办法

phpmyadmin上传到网站目录后提示解决phpmyadmin mysqli_real_connect(): (HY000/2002): No such file or directory的错误,解决方法把phpmyadmin目录中的配置文件config.sample.inc.php改成config.inc.php 打开编辑config.inc.php 找到: $cfg['Servers'][$i]['host'] = 'localhost'; 改成: $cfg['Servers'][$i][

PHP连接MySQL的时候报错SQLSTATE[HY000] [2002] No such file or directory

错误环境:Mac OS 10.10 找到mysql.sock文件的位置 $sudo find / -name mysql.sock ------结果如下---------- find: /dev/fd/3: Not a directory find: /dev/fd/4: Not a directory /private/tmp/mysql.sock 检查/var/mysql是否存在 $ll /var/mysql 如果/var/mysql不存在则创建 $sudo mkdir /var/mysql

错误 mysqli::real_connect(): (HY000/2002): No such file or directory

这个错误是由于无法找到 mysql.sock 文件 启动mysql服务并查看mysql的socket路径 可以通过mysql命令行 STATUS; 查看php.ini文件中 pdo_mysql.default_socket=/tmp/mysql.sock mysql.default_socket=/tmp/mysql.sock mysqli.default_socket = /tmp/mysql.sock 这三个参数的值是否和mysql的socket值一致,不一致就需要修改成一致

YII 错误 SQLSTATE[HY000] [2002] No such file or directory

在使用yii的yii\db\Connnection时发生错误 <?php namespace app\controllers; use yii\web\Controller; use yii\db\Connection; use Yii; class MyController extends Controller { public function actionIndex() { $country = Yii::$app -> db -> createCommand("sele