早上好,
我在我的本地Windows 7 PC上编写了下面的代码块并尝试运行它。不幸的是,我收到了:
Connect Error (1045) Access denied for user 'dbuser'@'myhost(using password: YES)
我已使用localhost和%为此数据库架构授予了dbuser Insert,Select,Update和Execute。我也能从服务器上的命令行使用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();
}
?>
我很难理解上面的代码块是否导致我的错误,或者是否需要在服务器上完成某些操作。任何人都可以建议一些调查领域吗?
谢谢, SID
答案 0 :(得分:1)
确保如果您在MySQL中使用GRANT
的主机名,则MySQL可以正确地将该主机名解析为您要连接的IP。
例如,如果你这样做
GRANT blah ON *.* to user@somehost
你必须记住MySQL不会看到'somehost',它会看到一个IP地址。它必须进行反向查找以获取主机名,如果IP没有反向映射,或映射到完全不同的东西,MySQL将不会提供访问权。
除非您能保证反向映射稳定,否则最好在MySQL中使用远程访问帐户的IP地址。
答案 1 :(得分:1)
<?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设置为变量(没有工作),然后我硬编码,工作得很好。