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

通过PHP而不是MySQL Workbench拒绝与远程MySQL主机的连接,php,mysql,xampp,Php,Mysql,Xampp,标题真的说明了一切。我能够进入远程服务器并对DB运行查询,但是当我尝试通过PHP连接时,我遇到以下错误: 用户'user'@'blahblahblah'(使用密码:是)的SQLSTATE[HY000][1045]访问被拒绝 以下是我用来连接数据库的代码: <?php function connectToDB() { $DBhost = 'remote.host.address.goes.here.com:3306'; $DBname = 'dbName'; $DBu

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

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

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

<?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,这可能会导致我的问题吗?

使用
extension\u loaded
函数检查是否加载了pdo

if ( extension_loaded('pdo') ) {
   echo "pdo extensions loaded";
}
使用以下方法检查特定于数据库的
PDO驱动程序
:-

if ( extension_loaded('pdo_mysql') ) { // e.g., pdo_mysql
    echo "pdo_mysql driver loaded";
}
端口添加到连接字符串中。还添加了属性
ATTR\u EMULATE\u 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 ); 

不确定这是否能解决您的问题。

您是否在mysql服务器机器上安装了相同的mysql workbench?不,我在同一远程访问点安装了mysql workbench,在同一台计算机上执行PHPdo,您安装了pdo和pdo_mysql?如果您有这些软件包,phpinfo()将输出。如何检查是否已安装这些软件包?我刚刚安装了XAMPP,所以它应该是PHPAPI扩展mysql、mysqli、pdo_mysql的最新版本,所以看起来我缺少了普通的pdo?