通过PHP而不是通过MySQL Workbench拒绝远程MySQL主机的连接

时间:2014-06-12 15:50:46

标签: php mysql xampp

标题真的说明了一切。我能够进入远程服务器并对数据库运行查询,但是当我尝试通过PHP连接时,我收到此错误:

  

SQLSTATE [HY000] [1045]拒绝用户'用户'@'blahblahblah'的访问权限(使用密码:是)

以下是我用来连接数据库的代码:

<?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中使用EXACT相同的凭据并且连接得很好,我可以查询我想要的所有内容。我正在使用XAMPP,这可能导致我的问题吗?

1 个答案:

答案 0 :(得分:0)

使用extension_loaded函数加载检查pdo。

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

使用以下方法检查特定于数据库的PDO driver: -

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 ); 

不确定这会解决您的问题。