2014-06-12 2 views
0

제목에 실제로이 모든 내용이 나와 있습니다. 나는 원격 서버로 가져 와서 DB에 대한 쿼리를 실행할 수 있어요,하지만 난 PHP를 통해 연결하려고하면이 오류 얻을 :PHP를 통해 원격 MySQL 호스트에 연결이 거부되었지만 MySQL Workbench를 통해 연결이 거부되었습니다.

여기

SQLSTATE[HY000] [1045] Access denied for user 'user'@'blahblahblah' (using password: YES)

나는 데이터베이스에 연결하는 데 사용되는 코드는 다음과 같습니다

<?php 
function connectToDB() { 
    $DBhost = 'remote.host.address.goes.here.com:3306'; 
    $DBname = 'dbName'; 
    $DBuser = 'myUserName'; 
    $DBpass = 'myPassword'; 
    $link = null; 

    try 
    { 
     $link = new PDO("mysql:host=$DBhost;dbname=$DBname", $DBuser, $DBpass); 
     $link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } 
    catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
    } 

    return $link; 
} 
?> 

내가 말했듯이, 나는 MySQL Workbench에서 동일한 자격 증명을 사용하고 잘 연결하며 원하는 모든 것을 쿼리 할 수 ​​있습니다. XAMPP를 사용하고 있는데 문제가 될 수 있습니까?

+0

mysql 서버 컴퓨터에 mysql workbench가 설치되어 있습니까? – fortune

+0

아니요, 같은 원격 액세스 지점에서 MySQL Workbench를 가지고 있습니다. 동일한 컴퓨터에서 PHP – user3730575

+0

을 실행하면 pdo와 pdo_mysql이 설치되어 있습니까? 이러한 패키지가 있으면 phpinfo()가 출력됩니다. – fortune

답변

0

extension_loaded 기능을 사용하여 pdo가로드되었는지 확인하십시오. 데이타베이스 고유의 PDO driver 사용

if (extension_loaded('pdo')) { 
    echo "pdo extensions loaded"; 
} 

확인 : -

if (extension_loaded('pdo_mysql')) { // e.g., pdo_mysql 
    echo "pdo_mysql driver loaded"; 
} 

가 연결 문자열에 port를 추가합니다. 또한 ATTR_EMULATE_PREPARES 속성을 추가했습니다. 시험.

$DBhost = "remote.host.address.goes.here.com:3306"; 
$DBPort = "3306"; 
$DBname = 'dbName'; 
$DBuser = 'myUserName'; 
$DBpass = 'myPassword'; 
$link = null; 


$link = new PDO("mysql:host=$DBhost;dbname=$DBname;port=$DBPort", $DBuser, $DBpass); 
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$link->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

잘 모르겠 으면 문제가 해결됩니다.

+0

을 설치 우분투/리눅스 – user3730575

관련 문제