Warning: mysqli_connect(): Access denied for user 'root'@'localhost' (using password: NO)的解决方法

我使用的是wampserver集成环境,用php测试连接mysql数据库,使用mysqli_connect(),最后警告:Warning: mysqli_connect(): (HY000/1045): Access denied for user ‘root’@‘localhost’ (using password: NO) in E:\PHP\wampserver\wamp64\www\projects\test\test02.php on line 2。

经过我上网查找都没能解决该问题,最后发现mysqli_connect()里的密码参数为空字符串时,竟然连接成功。
Warning: mysqli_connect(): Access denied for user 'root'@'localhost' (using password: NO)的解决方法
Warning: mysqli_connect(): Access denied for user 'root'@'localhost' (using password: NO)的解决方法
由于我安装了一个独立的mysql数据库,而wampserver又自带了一个mysql,我停止了wampserver服务的mysql服务,此时wampserver图标变黄色正常。再使用密码(此密码为独立的mysql数据库),密码不为空字符串了,发现竟然连接成功!然后我又停止了独立的mysql服务,开启了wampserver自带的mysql服务,发现密码为空字符串时,连接成功!说明wampserver自带的mysql密码为空,没有设置密码,需重新设置密码。

总结:当初我一直使用独立的mysql数据库的密码,测试连接数据库,发现好像两个mysql数据库同时开启后,默认连接wampserver自带的mysql服务,所以我当初一直使用独立的mysql的密码测试连接数据库,密码是错误的,就会显示using password: NO,只需要修改wampserver自带的mysql的密码就可以了,修改wampserver自带的mysql的密码前需要把独立的mysql服务暂时先停止,最后再修改密码。

MySQL密码的修改方法:

  • 方法一:使用用SET PASSWORD命令
    首先登录MySQL
    格式:mysql> set password for 用户名@localhost = password(‘新密码’);
    例如:mysql> set password for [email protected] = password(‘123’);
  • 方法二:用mysqladmin
    格式:mysqladmin -u用户名 -p旧密码 password 新密码
    例如:mysqladmin -uroot -p123456 password 123
  • 方法三:用UPDATE直接编辑user表
    首先登录MySQL。
    C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin>mysql -u root -p
    mysql> use mysql;
    mysql> update user set password=password(‘123’) where user=‘root’ and host=‘localhost’;
    mysql> flush privileges;

修改完密码后,在使用修改后的密码连接就也可以连接成功了!(建议把独立的mysql和wampserver自动的mysql数据库的密码设置一致方便记忆

【扩展】

我安装了一个单独独立的mysql,wampserver又自带了一个mysql,有时候wampserver开启后,打开单独的mysql,会出现 Access denied for user ‘root’@‘localhost’ (using password:YES)。可能是单独的mysql和wampserver自带的mysql的都是3306端口,该端口被wampserver占用,只要修改wampserver的mysql端口号就行了,再重新连接单独的mysql就可以了。

修改wampserver的mysql端口号方法:

  1. 方法一:点击wampserver绿色图标,点击mysql,再点击use a port other than 3306,等待一会会有弹窗,就可以输入一个端口号。
  2. 方法二:在wampserver文件目录里找到mysql文件目录,(参照:E:\PHP\wampserver\wamp64\bin\mysql\mysql5.7.9),找到my.ini文件,打开,修改如下图:
    Warning: mysqli_connect(): Access denied for user 'root'@'localhost' (using password: NO)的解决方法
    最后重启wampserver服务,在重新连接单独的mysql就可以了。