0

起初我尝试在 PHP 中连接 PDO。但是,我收到拒绝访问的消息。我可以使用完全相同的命令连接到命令行界面,但是 php 从 PDO 给出了这个错误:

致命错误:在 C:\inetpub\wwwroot\index.php:3 Stack跟踪:#0 C:\inetpub\wwwroot\index.php(3): PDO->__construct('mysql:host=loca...', 'avt_root', '[**]') #1 {main}在第 3 行的 C:\inetpub\wwwroot\index.php 中抛出

$db = new PDO("mysql:host=localhost;dbname=AVT_TIME", "avt_root", "[**]");

所以接下来我尝试使用 mysql_connect 进行故障排除,可能 PDO 参数不正确:

$mysql = mysql_connect("localhost", "avt", "[**]");

但是,即使这给了我几乎相同的错误:

警告:mysql_connect():第 2 行 C:\inetpub\wwwroot\index.php 中用户 'avt'@'localhost' 的访问被拒绝(使用密码:YES)

服务器配置:IIS7.0,PHP 在 fast_cgi 下运行,MySQL 安装了在 php.ini 文件中选择的正确扩展名。

感谢任何和所有帮助,减去有关正确用户名和密码的任何评论,我已经检查并三次检查了 avt_root 和 avt 帐户。两者的密码实际上是相同的,都可以通过远程桌面的 CLI 登录。

4

2 回答 2

1

localhost在 mysql-land 中可能有点不稳定。函数使用的标准 mysql 接口库在mysql_*()内部重新定义localhost为本地 unix 域套接字连接。这纯粹是为了提高效率,因为 unix 套接字没有 TCP 套接字的开销。

可能使用 mysqlnd 的 PDO 不会有这个问题。localhost 将意味着 127.0.0.1 并且它将尝试使用 TCP 套接字。

确保您的avt帐户设置为avt@127.0.0.1允许 TCP 连接。

于 2013-05-17T21:00:42.890 回答
0

我最终放弃了这个并完全重新安装了 MySQL,我只打算使用 root 帐户,因为我们有足够高的安全性,我不必太担心有人会弄乱一个仅限 Intranet 的站点。

于 2013-05-20T14:53:14.550 回答