錯誤詳情:
使用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>