2012-12-11 2 views
0

mySql에서 PDO로 전환 중이지만 데이터베이스에 올바른 연결을 만드는 데 문제가 있습니다. MySQL은 사용자 이름과 암호 작업, 내가 코드를 사용하여 연결하려고 할 때하지만이 오류 메시지는 다음과 같습니다 :사용자 이름과 암호는 정확하지만 여전히 오류가 발생합니다. SQLSTATE [28000]

ERROR: SQLSTATE[28000] [1045] Access denied for user 'sean'@'localhost' (using password: NO) 

내가 확실히이기 때문에 그것은 'NO'암호를 말하는 이유는 정말 모르겠어요 올바른 암호를 사용하고 Sean이라는 사용자가 없습니다. 사용자 이름이나 비밀번호에 사용하는 구문에 문제가 있습니까?

내가 (내가 스와핑있어 'MyPassword'실제 암호)

<?php 
session_start(); 
try { 
$conn = new PDO('mysql:host=localhost;dbname=MyDatabase', $clickfi4_root, $MyPassword); 
    $stmt = $conn->prepare('SELECT * FROM customer_info WHERE id = :id'); 
    $stmt->execute(array('id' => $id)); 
    $result = $stmt->fetchAll(); 
    if (count($result)) { 
    foreach($result as $row) { 
     print_r($row); 
    } 
    } else { 
    echo "No rows returned."; 
    } 
} catch(PDOException $e) { 
echo 'ERROR: ' . $e->getMessage(); 
}  
?> 
+0

을 좋아하지 PHP를 통해 MySQL 쿼리를 실행합니다. – Anton

+0

@Anton - 호기심 때문에, 왜? –

+1

보안; 루트 계정에는 무제한 특권이 있습니다. PHP 코드에 취약점을 남기면 루트 계정을 사용하면 해커가 더 많은 피해를 줄 수 있습니다. 예를 들어 루트는 테이블과 데이터베이스를 삭제할 수 있지만 SELECT, INSERT 및 UPDATE 만 수행 할 수있는 사용자 계정을 만들 수 있습니다. – Anton

답변

1

net tuts tutorial의 구문이 약간 잘못되었습니다. 나는 미래 Google 직원

$conn = new PDO('mysql:host=localhost;dbname=MyDatabase', clickfi4_root, MyPassword); 
0

때때로 [email protected] 대신 사용자 이름 @ 로컬 호스트의 트릭을 수행 사용하고 코드입니다.

+0

문제는 내가 username과 password를 위해 사용했던 문법 이었다는 것을 알게되었다. (나는 '$' 그들 앞에서)하지만, 이제는 작동 중입니다. localhost를 127.0.0.1로 바꾸면 무엇을 제안했는지 이해할 수 있습니다 .--) 도로에서 편리하게 사용할 수 있습니다 :-) –

1

오류 메시지가 말했다 : 암호를 의미

(using password: NO) 

로그인 시도에 사용되지 않았다.

$ MyPassword의 값을 확인하십시오.

또한 루트가 아닌 다른 계정을 사용해보십시오. 어쨌든 모범 사례는 아닙니다.

+0

오류 메시지가 표시되었습니다. 너무 정확한 비밀번호를 사용하고 있기 때문에 (트리플 체크). 내가 사용하고있는 문법에 문제가 있는지 궁금하다. - $ MyPassword (실제 비밀번호를 'MyPassword'로 바꾼다. –

+0

문제는 내가 사용자 이름과 암호를 사용하는 구문 이었지만 (내가 앞에있는 '$'를 제거해야했다.), 이제는 작동하고있어 내가 사용하고있는 계정을 전환 할 것이다.) –

0

:-) 사용자 이름과 암호 앞에 '$'를 제거 할 때 의미가 있습니다, 난 그냥 지금 같은 문제가 없었다 나는 암호가 정확하다고 확신했다. 예 비밀번호는 맞았지만 문제는 비밀번호를 생성하는 방법과 비밀번호를 설정 파일에 보관하는 방법입니다.

나 같은 임의의 암호 생성기를 사용하는 경우 암호에 $ 달러 기호가 없는지 확인하십시오.

당신이 암호를 $이있는 경우 다음이

$pass = 'randomchars$morerandom'; 

같은 설정 파일에 당신에게 비밀을 유지해야합니다하지만 루트 계정을 사용하지 않는 것이 좋습니다이

$pass = "randomchars$morerandom"; 
관련 문제