MySQL错误1045次拒绝访问
问题描述:
我写了下面的代码块我的本地Windows 7 PC上,并试图运行它。不幸的是,我收到:
Connect Error (1045) Access denied for user 'dbuser'@'myhost(using password: YES)
我已授予dbuser的插入,选择,更新,并使用本地主机都和%这个数据库模式执行。我可以从服务器上的命令行使用mysql -u dbuser -p。
下面的代码块:
<?php
/* Set Variables */
$host="serveripaddress";
$db="dbname";
$username="dbuser";
$pass="pass";
/* Attempt to connect */
$mysqli=new mysqli($host,$username,$pass,$db);
if (mysqli_connect_error()){
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
echo 'Success... ' . $mysqli->host_info . "\n";
$mysqli->close();
}
?>
我难以理解上面的代码块是否是导致我的错误,或是否有需要在服务器上做了什么。任何人都可以提出一些调查领域吗?
感谢, 希德
答
确保,如果您使用的是在MySQL中GRANT
一个主机名,MySQL能够妥善解决主机名您从连接的IP。
举例来说,如果你这样做
GRANT blah ON *.* to [email protected]
你要记住,MySQL将看不到“某”,它会看到一个IP地址。它必须进行反向查找才能获得主机名,如果IP没有反向映射,或者映射到完全不同的东西,MySQL将不会授予访问权限。
除非您可以保证反向映射稳定,否则最好在MySQL中使用远程访问帐户的IP地址。
答
<?php
/* Set Variables */
$host="127.0.0.1:3306";
$db="dbname";
$username="dbuser";
$pass="pass";
/* Attempt to connect */
$mysqli=new mysqli($host,$username,$pass,$db);
if (mysqli_connect_error()){
die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
}
else
{
echo 'Success... ' . $mysqli->host_info . "\n";
$mysqli->close();
}
?>
首先,为您的if/else语句添加这些大括号。其次,尝试对IP进行硬编码。我只是将IP设置为一个变量(没有工作),然后对它进行硬编码,工作得很好。
Doublechecked host? – 2010-08-20 16:33:29
是的。我重置dbuser密码,无济于事。在我的$ host变量中使用服务器名称而不是IP地址会更好吗? – SidC 2010-08-20 16:49:09