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> 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM