복붙노트

경고 : mysql_connect () : [2002] (unix : ///tmp/mysql.sock를 통해 연결을 시도하는) 그러한 파일이나 디렉토리가 없습니다.

PHP

경고 : mysql_connect () : [2002] (unix : ///tmp/mysql.sock를 통해 연결을 시도하는) 그러한 파일이나 디렉토리가 없습니다.

내 애플 (PHP로) 터미널에서 MySQL DB에 연결하려고합니다.

어제는 괜찮 았는데, 이제 갑자기 제목에 오류가 발생합니다.

이 스크립트는 브라우저 (XAMPP가 설치되어 있음)를 실행하기 위해 브라우저를 사용할 때 작동하지만 터미널은 DB에 연결을 거부합니다.

다음은 연결할 때 포함시키는 파일입니다 (이 스크립트가 포함되어 있지 않아도 작동하지만 DB에 연결되지는 않습니다).

<?php
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("FNB1C_data") or die(mysql_error());
?>

내 브라우저에서 작동하므로 제대로 작동합니다.

터미널에서 사용하는 명령은 php scriptname.php입니다.

해결법

  1. ==============================

    1.어떤 이유로 OS X의 mysql은 필요한 소켓 파일의 위치를 ​​약간 잘못 잡았지만 고맙게도 해결책은 심볼릭 링크를 설정하는 것만 큼 간단하다.

    어떤 이유로 OS X의 mysql은 필요한 소켓 파일의 위치를 ​​약간 잘못 잡았지만 고맙게도 해결책은 심볼릭 링크를 설정하는 것만 큼 간단하다.

    /tmp/mysql.sock 또는 /var/mysql/mysql.sock과 같은 소켓 (길이가 0 인 파일로 표시)이있을 수 있지만 하나 이상의 응용 프로그램이 다른 위치에서 찾고 있습니다. 이 명령으로 알아보십시오 :

    ls -l /tmp/mysql.sock /var/mysql/mysql.sock
    

    소켓을 이동하고 설정 파일을 편집하는 대신 편집 된 파일을 로컬 및 경로가 올바른 서버에서 멀리 두는 것을 기억해야합니다. 심볼릭 링크를 만들어서 잘못된 장소를 찾고 있어도 필요한 소켓을 찾습니다. !

    /tmp/mysql.sock가 있지만 /var/mysql/mysql.sock이 없다면 ...

    cd /var 
    sudo mkdir mysql
    sudo chmod 755 mysql
    cd mysql
    sudo ln -s /tmp/mysql.sock mysql.sock
    

    /var/mysql/mysql.sock가 있지만 /tmp/mysql.sock이 없다면 ...

    cd /tmp
    ln -s /var/mysql/mysql.sock mysql.sock
    

    디렉토리와 링크를 만들려면 권한이 필요하므로 위의 명령 앞에 필요하면 sudo를 접두사로 붙이십시오.

  2. ==============================

    2.나는 또한이 오류가 있었지만 여기에있는 제안을 통해서만 고칠 수 있었다.

    나는 또한이 오류가 있었지만 여기에있는 제안을 통해서만 고칠 수 있었다.

    요약하면 다음과 같습니다.

    127.0.0.1
    

    대신에:

    localhost
    

    그 이유는 "localhost"가 MySQL 드라이버의 특별한 이름이기 때문에 TCP 소켓 대신 MySQL 소켓에 UNIX 소켓을 사용하게하기 때문입니다.

  3. ==============================

    3.나는 똑같은 문제를 겪고 있었고 이것이 내가 그것을 고쳤다.

    나는 똑같은 문제를 겪고 있었고 이것이 내가 그것을 고쳤다.

    나는 이것을 가졌지 만 효과가 없었다.

    $con = mysql_connect('localhost', 'root', '1234');
    

    나는 이것을했고 그것이 효과가 있었다 :

    $con = mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock', 'root', '1234');
    

    mysql 서버를 사용하는 대신 유닉스 소켓에 직접 연결했다. 나를 위해 일했다.

  4. ==============================

    4.MySQL 소켓은 일반적으로 /tmp/mysql.sock 또는 /var/mysql/mysql.sock에 있지만 PHP는 잘못된 위치에있을 것입니다.

    MySQL 소켓은 일반적으로 /tmp/mysql.sock 또는 /var/mysql/mysql.sock에 있지만 PHP는 잘못된 위치에있을 것입니다.

  5. ==============================

    5.Mac OS X에서 XAMPP를 사용 중이며 Brian Lowe의 솔루션은 약간의 수정을 거쳐 작업했습니다.

    Mac OS X에서 XAMPP를 사용 중이며 Brian Lowe의 솔루션은 약간의 수정을 거쳐 작업했습니다.

    mysql.sock 파일은 실제로 "/ Applications / xampp / xamppfiles / var / mysql /"폴더에 있습니다. 그래서 / tmp와 / var / mysql 모두에 링크해야합니다. 어느 것이 PHP 커맨드 라인에서 사용되는지는 확인하지 못했습니다. 그러나 이것이 수정되었습니다. 그래서 나는 행복합니다 :-)

    sudo su
    ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /tmp/mysql.sock
    mkdir /var/mysql
    ln -s /Applications/xampp/xamppfiles/var/mysql/mysql.sock /var/mysql/mysql.sock
    
  6. ==============================

    6.Mac OS X EL Capitan + MAMP Pro 이 작업을 수행

    Mac OS X EL Capitan + MAMP Pro 이 작업을 수행

    cd /var
    sudo mkdir mysql
    sudo chmod 755 mysql
    cd mysql
    sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock
    

    그런 다음

    cd /tmp
    sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock mysql.sock
    

    희망이 당신에게 시간을 절약 할 수 있습니다.

  7. ==============================

    7.그 이유는 PHP가 mysql.sock의 올바른 경로를 찾을 수 없기 때문이다.

    그 이유는 PHP가 mysql.sock의 올바른 경로를 찾을 수 없기 때문이다.

    mysql이 먼저 실행되고 있는지 확인하십시오.

    그런 다음 /tmp/mysql.sock과 같이 mysql.sock이있는 경로를 확인하십시오.

    이 경로 문자열을 php.ini에 추가하십시오 :

    마지막으로 Apache를 다시 시작하십시오.

  8. ==============================

    8.다음 문제에 직면했을 때 :

    다음 문제에 직면했을 때 :

    /etc/php.ini의 "mysql.default_socket"값을 다음과 같이 설정하십시오 :

     "mysql.default_socket = /var/mysql/mysql.sock". 
    

    그런 다음 서버 관리자에서 웹 서비스를 다시 시작하십시오.

  9. ==============================

    9.MySQL이 소켓을 배치하는 곳에서 링크되는 어렴풋한 2002 소켓 오류를 수정하고 MySQL은 OSX에서 / tmp에 넣고 OSX는 / var / mysql에서 찾는다. 소켓은 mysql 클라이언트를 허용하는 파일 유형이다. / 서버 통신.

    MySQL이 소켓을 배치하는 곳에서 링크되는 어렴풋한 2002 소켓 오류를 수정하고 MySQL은 OSX에서 / tmp에 넣고 OSX는 / var / mysql에서 찾는다. 소켓은 mysql 클라이언트를 허용하는 파일 유형이다. / 서버 통신.

    sudo mkdir /var/mysql
    

    그리고

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

    출처 : http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/

  10. ==============================

    10.또 다른 해결책은 다음과 같이 php.ini 구성 파일에서 소켓 위치를 수정하는 것입니다.

    또 다른 해결책은 다음과 같이 php.ini 구성 파일에서 소켓 위치를 수정하는 것입니다.

    pdo_mysql.default_socket=/tmp/mysql.sock
    

    물론, 심볼릭 링크도 작동합니다. 따라서 기호 집합의 우선 순위가 변경됩니다.

  11. ==============================

    11.포트를 사용하여 php53-mysql을 설치하면이 문제의 해결책 인 다음 메시지를 반환합니다.

    포트를 사용하여 php53-mysql을 설치하면이 문제의 해결책 인 다음 메시지를 반환합니다.

    To use mysqlnd with a local MySQL server, edit /opt/local/etc/php53/php.ini
    and set mysql.default_socket, mysqli.default_socket and
    pdo_mysql.default_socket to the path to your MySQL server's socket file.
    
    For mysql5, use /opt/local/var/run/mysql5/mysqld.sock
    For mysql51, use /opt/local/var/run/mysql51/mysqld.sock
    For mysql55, use /opt/local/var/run/mysql55/mysqld.sock
    For mariadb, use /opt/local/var/run/mariadb/mysqld.sock
    For percona, use /opt/local/var/run/percona/mysqld.sock
    
  12. ==============================

    12.나는 같은 문제를 겪고 있었다.

    나는 같은 문제를 겪고 있었다.

    [PDOException] SQLSTATE [HY000] [2002] 해당 파일 또는 디렉토리가 없습니다.

    [ErrorException] 경고 : PDO :: __ construct () : [2002] ... htdocs / Symfony / vendor / doctrine-dbal / lib / Doctrine의 파일 또는 디렉토리 (unix를 통한 연결 시도 : ///var/mysql/mysql.sock) /DBAL/Driver/PDOConnection.php

    해결책은 sock 파일에 심볼릭 링크를 만들어 문제를 해결하는 것입니다. 문제를 해결하려면 다음을 수행하십시오.

    $ sudo mkdir / private / var / mysql /

    $ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /private/var/mysql/mysql.sock

    출처 : http : //www.reecefowell.com/2012/07/21/symfony2-cli-does-not-connect-to-mysql-while-browser-works-fine/

  13. ==============================

    13.나는 같은 오류가있다. Mysql은 phpMyAdmin을 시작하기 전에 독립 실행 형 응용 프로그램으로 실행되고있었습니다.

    나는 같은 오류가있다. Mysql은 phpMyAdmin을 시작하기 전에 독립 실행 형 응용 프로그램으로 실행되고있었습니다.

    나는 방금 mysql을 멈췄다. 그때 sudo / 응용 프로그램 / XAMPP / xamppfiles / xampp stop sudo / 응용 프로그램 / XAMPP / xamppfiles / xampp start

    잘 돌아갔다.

  14. ==============================

    14.방금이 문제가 있었지만 특정 페이지를로드 할 때만 나타났습니다 (다른 페이지는 정상적으로 작동했습니다). mysql_close ()로 커넥션을 닫은 후에 MySQL에 대한 호출을하고 있다는 것이 밝혀졌다. 따라서 @brucenan은 다음과 같이 말했습니다 : MySQL을 호출 할 때 MySQL이 실행 중인지 확인하십시오.

    방금이 문제가 있었지만 특정 페이지를로드 할 때만 나타났습니다 (다른 페이지는 정상적으로 작동했습니다). mysql_close ()로 커넥션을 닫은 후에 MySQL에 대한 호출을하고 있다는 것이 밝혀졌다. 따라서 @brucenan은 다음과 같이 말했습니다 : MySQL을 호출 할 때 MySQL이 실행 중인지 확인하십시오.

  15. ==============================

    15.애플 터미널에서 MAMP PHP를 별명을 짓기 만하면됩니다.

    애플 터미널에서 MAMP PHP를 별명을 짓기 만하면됩니다.

    alias phpmamp='/Applications/MAMP/bin/php/php7.0.0/bin/php'
    

    예 :> phpmamp - v

    이제 다음과 같이 실행할 수 있습니다 :> phpmamp scriptname.php

    참고 : 현재 터미널 세션에만 적용됩니다.

  16. ==============================

    16.MAMP를 사용할 수도 있으므로 포트를 기본값 3306으로 변경하거나 database.php에서 127.0.0.1을 사용하십시오

    MAMP를 사용할 수도 있으므로 포트를 기본값 3306으로 변경하거나 database.php에서 127.0.0.1을 사용하십시오

    $db['default'] = array(
        'dsn'   => '',
        'hostname' => 'localhost',// leave it for port 3306
        'username' => 'yourUserhere',
        'password' => 'yourPassword',
        'database' => 'yourDatabase',
        'dbdriver' => 'mysqli',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => (ENVIRONMENT !== 'production'),
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
    );
    

    또는 기본 설정 :

    $db['default'] = array(
            'dsn'   => '',
            'hostname' => '127.0.0.1:8889',// leave it for port 8889
            'username' => 'yourUserhere',
            'password' => 'yourPassword',
            'database' => 'yourDatabase',
            'dbdriver' => 'mysqli',
            'dbprefix' => '',
            'pconnect' => FALSE,
            'db_debug' => (ENVIRONMENT !== 'production'),
            'cache_on' => FALSE,
            'cachedir' => '',
            'char_set' => 'utf8',
            'dbcollat' => 'utf8_general_ci',
            'swap_pre' => '',
            'encrypt' => FALSE,
            'compress' => FALSE,
            'stricton' => FALSE,
            'failover' => array(),
            'save_queries' => TRUE
        );
    
  17. from https://stackoverflow.com/questions/4219970/warning-mysql-connect-2002-no-such-file-or-directory-trying-to-connect-vi by cc-by-sa and MIT license