【问题标题】:MySQL access denied in PHP, CLI will connectPHP 中的 MySQL 访问被拒绝,CLI 将连接
【发布时间】:2013-05-13 03:17:05
【问题描述】:

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

致命错误:在 C:\inetpub\wwwroot\index.php 中未捕获异常 'PDOException' 并带有消息 'SQLSTATE[HY000] [1045] 用户 'avt_root'@'localhost'(使用密码:YES)'的访问被拒绝:3 堆栈跟踪:#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 文件中选择了正确的扩展名。

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

【问题讨论】:

  • mysql db 是否托管在运行 web 服务器/php 的同一台机器上?
  • 是的,同一台机器。正如我所说的服务器配置...

标签: php mysql iis-7


【解决方案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 连接。

【讨论】:

  • 刚试过这个,我还是无法使用 MySQL_ 函数和 PDO 连接。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2018-05-19
    • 2020-03-29
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    相关资源
    最近更新 更多