Php 拒绝用户root@localhost的访问

Php 拒绝用户root@localhost的访问,php,mysql,Php,Mysql,我正在尝试连接到mysql,但它给出了一个警告 mysqli_connect:HY000/1045:使用密码拒绝用户“root”@“localhost”的访问:是 .我认为用户名和密码是正确的,因为我可以访问komand line中的mysql。我还创建了另一个用户并授予他所有权限,但我仍然有此警告 我可以访问phpMyAdmin。我使用的是wamp服务器Apache 2.4.9和mysql 5.1 <?php $conn = mysqli_connect("loca

我正在尝试连接到mysql,但它给出了一个警告 mysqli_connect:HY000/1045:使用密码拒绝用户“root”@“localhost”的访问:是 .我认为用户名和密码是正确的,因为我可以访问komand line中的mysql。我还创建了另一个用户并授予他所有权限,但我仍然有此警告

我可以访问phpMyAdmin。我使用的是wamp服务器Apache 2.4.9和mysql 5.1

     <?php
      $conn = mysqli_connect("localhost", "root", "password");
       ?>

wamp的mysql默认配置将用户名root设置为无密码

$conn = mysqli_connect("localhost", "root", "");

如果您使用的是localhost,上述代码应该可以工作。它没有密码。您只需按如下方式进行设置:

<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("database name here") or die(mysql_error());
?>

如果用户存在且blahblah暂时不重要,则让以下两行失败:

create user 'root'@'localhost' identified by 'blahblah';
create user 'root'@'127.0.0.1' identified by 'blahblah';
您的助学金:

grant all on *.* to 'root'@'localhost';
grant all on *.* to 'root'@'127.0.0.1';
将密码更改为您会记住的密码:

set password for 'root'@'localhost' = password('NewPassword');
set password for 'root'@'127.0.0.1' = password('NewPassword');
查看您有多少根用户。真正的用户是用户/主机组合。密码将以哈希形式显示:

select user,host,password from mysql.user where user='root';

上面的第二个是MySQL 5.7

如果您获得了以上两个以上的用户,请删除其他用户,例如:

drop user 'root'@'%';   -- this is the wildcard hostname, can be a security risk
drop user 'root'@'::1';
还是只有两个?我希望如此。使用上面的选择STMT进行检查


不要使用root连接用户应用。root仅用于维护。不管它是服务器端代码还是管理员正在运行它。未受保护和/或未注入有害语句的代码将以root用户身份运行。这就是原因。

简单修复:根用户帐户默认无密码。因此,将连接参数更改为$conn=mysqli_connectlocalhost,root,'database_name';问题涉及的是MySQLi而不是mysql标准,因为这是depracatedcan我可以删除host='127.0.0.1'?我不会以防万一。那是一个安全的。通过使用与上面所示相同的密码,您就可以将其解析为127.0.0.1,具体取决于输入的角度。如果您需要严格的安全性,可以删除根为“root”@“%”的通配符和匿名通配符。现在,使用“jane123”@“%”是另一个问题,她可以作为主机名的一个很好的通配符候选者,假设安全性被锁定。但不是对于root,imoi完成了所有步骤,但我仍然使用“$conn=mysqli\u connectlocalhost,root”连接到数据库,如何更改默认密码,我希望它是这样的$conn=mysqli\u connectlocalhost,root,password”
drop user 'root'@'%';   -- this is the wildcard hostname, can be a security risk
drop user 'root'@'::1';