通过PHP而不是MySQL Workbench拒绝与远程MySQL主机的连接
标题真的说明了一切。我能够进入远程服务器并对DB运行查询,但是当我尝试通过PHP连接时,我遇到以下错误: 用户'user'@'blahblahblah'(使用密码:是)的SQLSTATE[HY000][1045]访问被拒绝 以下是我用来连接数据库的代码:通过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
<?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?