gpt4 book ai didi

php - mysqli_connect 因 dbpassword 失败

转载 作者:行者123 更新时间:2023-11-29 08:53:19 26 4
gpt4 key购买 nike

我的系统似乎有一些我无法解释的奇怪问题。我有一个以下代码片段,我将用它来连接到数据库并从数据库读取数据

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建立连接。我尝试在另一个系统上运行此代码并且运行良好。这是两个警告和一个连接失败错误。

Warning: mysqli_connect() [function.mysqli-connect]: (28000/1045): Access denied for user 'root'@'localhost' (using password: NO) in D:\xampp\htdocs\products.php on line 7

Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in D:\xampp\htdocs\products.php on line 7 Could not connect:

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

最佳答案

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

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

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

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

正如 @MarcB 所说,明智的做法是使用只能访问服务器上特定数据库的登录名,而不是对所有数据库的 root 访问权限。这样,如果您的代码遭到黑客攻击,他们只能访问第一个数据库(理论上)。

关于php - mysqli_connect 因 dbpassword 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10577208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com