对外部主机的PDO访问被拒绝,但我可以访问phpmyadmin cp

对外部主机的PDO访问被拒绝,但我可以访问phpmyadmin cp,php,pdo,Php,Pdo,我正在尝试通过以下脚本连接到外部数据库: $dsn = 'mysql:host=xxx.xxx.xxx.xxx;dbname=dbname'; $user = 'user'; $password = 'pass'; try { $pdo = new PDO($dsn, $user, $password); $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); } catch (PDOException

我正在尝试通过以下脚本连接到外部数据库:

$dsn = 'mysql:host=xxx.xxx.xxx.xxx;dbname=dbname';
$user = 'user';
$password = 'pass';
try {
    $pdo = new PDO($dsn, $user, $password); 
    $pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    die();
}
关于数据主机、用户名、数据库和密码,一切都是正确的,因为当我在浏览器上提示xxx.xxx.xxx.xxx/phpmyadmin并输入用户和密码时,它允许我进入数据库,并具有创建、删除等权限。 但是当我尝试通过PDO连接时,它给了我连接失败的消息:SQLSTATE[28000][1045]访问被拒绝用于


PHPMYADMIN面板上显示的信息如下: MySQL 服务器:通过UNIX套接字的本地主机 服务器版本:5.5.20 协议版本:10 用户:user@localhost MySQL字符集:UTF-8 Unicode utf8

网络服务器 阿帕奇 MySQL客户端版本:5.5.20 PHP扩展:mysqli

是否有可能因为PHP扩展名:mysqli属性而被迫使用mysqli?
提前感谢

除了setAttribute方法将错误输出设置为引发警告外,代码似乎没有任何问题。。但是你正处于一个“尝试/抓住”的阶段。。因此,您可能需要考虑使用PDO::ErrMeDyExtExcor。
其次,检查该用户名/密码的远程权限。该用户帐户可能有IP限制。您可以对用户帐户上的主机使用通配符%,或者建议提供连接到数据库的服务器IP。

我可以大胆猜测phpmyadmin工作正常,因为phpmyadmin位于您尝试连接的主机上。我的猜测是,服务器或用户帐户被配置为只能通过127.0.0.1/localhost进行访问-您可以为尝试连接的用户创建另一条记录,并为该用户提供通配符或特定主机。根据您在此处提供的信息,您似乎只需要安装MySQL就可以接受来自其他主机的连接。

同时,我尝试在本地运行该应用程序,但它似乎也无法连接,因此在识别上述问题时,这可能会有所帮助。 这次在localhost中,错误是: 连接失败:用户“xxxxxxx\uuxxxxxxx”@“localhost”的SQLSTATE[HY000][1045]访问被拒绝,密码为:是


我在自己的phpmyadmin上创建了该用户,并授予他对该数据库的所有权限,因此我无法理解为什么即使在localhost中,我也无法连接到该数据库。这可能与上述问题有关,还是完全不同的话题?谢谢大家!

PHPMYADMIN面板上显示的信息如下:MySQL服务器:Localhost mind yout非常感谢您的帮助。不幸的是,我自己无法做到这一点,所以在管理员联系我之前,我无法告诉您它是否按照预期进行。非常感谢!一旦该服务器的管理员告诉我这是否已经完成,我会告诉你这是否有效!