Access denied for user 'root@localhost' (using password:NO)问题的解决

错误详情

使用pymysql连接数据库mysql,一直无法连接上,

conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='1234', db='test', charset='utf8')

原因是自己的mysql没有密码,即root进入直接enter就可以进入数据库,但这样的数据库在使用其他连接可能都会出现这种问题,所以解决问题的第一步就是给root设置一个密码。

步骤如下:

[root ~]# mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password:NO)

1.停止mysql服务

[root ~]# net stop mysql

2.在没有任何特权的情况下启动mysql:

首先找到mysql安装路径,找到my.ini文件,在该文件末尾加上skip-grant-tables

然后启动mysql服务

[root ~]# net start mysql 

3.输入mysql命令符

[root ~]# mysql -u root
mysql> 

4.修复root用户的权限设置

mysql> use mysql;
Database changed
mysql> select * from  user;
Empty set (0.00 sec)
mysql> truncate table user;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> grant all privileges on *.* to root@localhost identified by 'YourNewPassword' with grant option;
Query OK, 0 rows affected (0.01 sec)

确认结果:

    mysql> select host, user from user;
+-----------+------+
| host      | user |
+-----------+------+
| localhost | root |
+-----------+------+
1 row in set (0.00 sec)

5.退出外壳程序并以正常模式重启mysql

mysql> quit;
[root ~]# kill -KILL [PID of mysqld_safe]
[root ~]# kill -KILL [PID of mysqld]
[root ~]# service mysql start

6.现在,可以使用设置的密码以root用户身份成功登录

 [root ~]# mysql -u root -pYourNewPassword 
 mysql> 

  

原文地址:https://www.cnblogs.com/AIchangetheworld/p/11726383.html