2014-09-03 6 views
0

다음 문자열을 사용하여 로컬 호스트에서 mysql 데이터베이스에 연결합니다 (루트 액세스 권한이 없음). 스택 오버플로 관련 게시물을 읽었습니다. 내가 사용하는 경우PDO를 사용하여 MySQL을 연결하십시오.

ini_set('mysqli.default_socket', '/tmp/mysql5.sock'); 
ini_set('mysql.default_socket', '/tmp/mysql5.sock'); 
ini_set('pdo_mysql.default_socket', '/tmp/mysql5.sock'); 

:

'mysql:unix_socket:/tmp/mysql5.sock;dbname='.DB_NAME.';' 

'mysql:localhost:/tmp/mysql5.sock;dbname='.DB_NAME.';charset=utf8' 

또는

내가이

SQLST있어

나는이 PHP 파일을 정의 ATE [HY000] [2002] 이러한 파일이 없습니다 또는 디렉토리 내가 사용

:

'mysql:host=127.0.0.1;dbname='.DB_NAME.';' 

나는이

SQLSTATE [HY000] [2002] 연결이 거부

있어

누구나 살펴볼 수 있습니다.

+1

'ini_set()'을 사용하여 소켓을 설정하고 사용하려고하는 이유를 모르겠습니다. 연결 문자열에 사용자 이름과 암호가 누락되었습니다. '$ pdo = new PDO ('mysql : host = localhost; dbname ='. DBNAME, 'user', 'password'); ' –

+0

서버가 정상적으로 작동합니까? '/ tmp/mysq5.sock' 파일이 존재합니까? 다른 도구를 사용하여 연결할 수 있는지 확인할 수 있습니까? – tadman

답변

1

제가 제 의견에 언급했듯이, 왜 당신이 MySQL 연결을 위해 소켓을 사용하고 싶은지 모르겠습니다. 또한 시험판에서 사용자 이름과 암호가 누락되었습니다. 그래서 이런 식으로 뭔가를 시도하십시오 :

$pdo = new PDO('mysql:host=localhost;dbname='.DBNAME, 'user', 'password'); 
1

을 내가 같은 문 제를했습니다와 같이, 호스트에서 'unix_socket 인수'를 추가로 해결 :

$host = 'localhost;unix_socket=/tmp/mysql5.sock'; 

그래서 당신이해야합니다

'mysql:host=' .$host .';dbname='.DB_NAME.';' 
관련 문제