在PHP中拒绝MySQL访问,CLI将连接

时间:2013-05-17 20:55:29

标签: php mysql iis-7

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

  

致命错误:未捕获异常'PDOException',消息'SQLSTATE [HY000] [1045]在C:\ inetpub \ wwwroot \ index.php中拒绝用户'avt_root'@'localhost'(使用密码:YES)' :3堆栈跟踪:#0 C:\ inetpub \ wwwroot \ index.php(3):PDO-> __ construct('mysql:host = loca ...','avt_root','[**]')#在第3行的C:\ inetpub \ wwwroot \ index.php中抛出1 {main}

$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)拒绝访问

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

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

2 个答案:

答案 0 :(得分:1)

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

PDO,可能使用mysqlnd,不会有这个问题。 localhost将表示127.0.0.1并且它将尝试使用TCP套接字。

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

答案 1 :(得分:0)

我最终放弃了这个并完全重新安装了MySQL,我只是要使用root帐户,因为我们有足够高的安全性,我不必过分担心有人在弄乱内部网站点。