mysqli_connect失败并显示dbpassword

时间:2012-05-14 03:28:52

标签: php mysql

我的系统似乎有一些我无法解释的奇怪问题。我有一个以下代码片段,用于连接和读取数据库中的数据

define('DB','products');
define('HOST','localhost');
define('DBPASS','password');
define('DBUSER','root');
define('DBTABLE','product_tb');
$conn=mysqli_connect(HOST,DBUSER,DBPASS) or die('Could not connect: ' . mysqli_error($conn));

但它始终报告错误,我无法与mysqli_connect建立连接。我尝试在另一个系统上运行此代码,它工作正常。这是两个警告和一个失败的连接错误。

  

警告:mysqli_connect()[function.mysqli-connect] :( 28000/1045):   访问被拒绝用户'root'@'localhost'(使用密码:NO)in   第7行的D:\ xampp \ htdocs \ products.php

     

警告:mysqli_error()期望参数1为mysqli,boolean   在第7行的D:\ xampp \ htdocs \ products.php中给出无法连接:

当我测试系统不需要密码时会发生这种情况,所以我把DBPASS留空了但是一旦我在真实系统上使用它,它就会失败并出现完全相同的错误,无论我是否遗漏了DBPASS ....我认为这是缓存但我重新启动了mysql和apache但是没有任何作用。谢谢你,如果你能提供一些帮助。

2 个答案:

答案 0 :(得分:2)

要检查连接错误,您应该使用mysqli_connect_error()而不是mysqli_error()

这将解决您的一条错误消息。

$conn=mysqli_connect(HOST,DBUSER,DBPASS) or die('Could not connect: ' . mysqli_connect_error());

其他错误消息是由数据库服务器中的无效权限引起的。阻止您访问数据库。就像@Dragon评论的那样,您可以使用cmdline中的用户名/密码组合登录吗?如果您没有cmd行访问权限,那么您是否拥有php myadmin或其他内容,您可以检查user / pass / db组合以确保它有效。

同样如@MarcB所说,使用只能访问服务器上特定数据库的登录信息而不是root访问所有数据库是明智之举。这样,如果您的代码被黑客攻击,他们只能访问1数据库(理论上)。

答案 1 :(得分:0)

我在很长时间的喧嚣之后发现了这一点 - 它实际上位于我的cPanel-> Home-> MySQL数据库中:

远程MySQL主机

“mysql2000.my-virtual-panel.com”是MySQL服务器的地址。连接到MySQL服务器时,必须指定此主机。

$主机=" mysql2000.my-virtual-panel.com&#34 ;;

应该有所帮助。