标题真的说明了一切。我能够进入远程服务器并对数据库运行查询,但是当我尝试通过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,这可能导致我的问题吗?
答案 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 );
不确定这会解决您的问题。