0

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

$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 服务器:Localhost via UNIX socket 服务器版本:5.5.20 协议版本:10 用户:user@localhost MySQL 字符集:UTF-8 Unicode (utf8)

Web 服务器 Apache MySQL 客户端版本:5.5.20 PHP 扩展:mysqli

由于“PHP扩展:mysqli”属性,我是否可能被迫使用mysqli?提前致谢!!!

4

3 回答 3

0

除了方法将错误输出设置为引发警告外,您的代码似乎没有任何问题setAttribute。但是您处于一个try/catch障碍中。所以您可能需要考虑使用PDO::ERRMODE_EXCEPTION.

其次,检查您对该用户名/密码的远程权限。该用户帐户可能存在 IP 限制。%您可以为on 用户帐户使用通配符,HOST或者(建议)提供连接到数据库的服务器 IP。

于 2013-07-03T19:43:57.967 回答
0

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

于 2013-07-03T19:58:58.177 回答
-1

同时,我尝试在本地运行该应用程序,但似乎也无法连接,因此在识别上述问题时,这可能会有所帮助。这次(在 localhost 中),错误是: Connection failed: SQLSTATE[HY000] [1045] Access denied for user 'xxxxxxx_xxxxxxx'@'localhost' (using password: YES)

我在自己的 phpmyadmin 上创建了用户,授予他对该数据库的所有权限,所以我不明白为什么即使在 localhost 中我也无法连接到它。它可能与上述问题有关,还是完全不同的东西应该放在不同的主题上?谢谢!

于 2013-07-05T12:22:30.937 回答