ERROR 1045 (28000): Access denied for user 'root'@'localhost'

問題描述

在學習廖老師課程之一——用Python鏈接Mysqlhtml

import mysql.connector
conn = mysql.connector.connect(
                  user='root', 
                  password='password',
                  database='test')

在鏈接數據庫時,有Mysql報錯:MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
因而在cmd下登陸mysql也出現了一樣的錯誤,因此得出結論:不是代碼的問題,多是配置環境的問題
搜尋陣子後找到了解決方法
(配置爲window10,MySQL Server 8.0)python

解決方法:

一.編輯my.ini文件

5.7之後的版本my.ini配置文件的目錄發生了改變
放在了C:\ProgramData\MySQL\MySQL Server 8.0之中
用Notepad打開後,在[mysqld]下加入skip-grant-tables,保存退出mysql

二.重啓MySQL

進入cmd命令行,前後輸入linux

net stop mysql
net start mysql

(若是拒絕訪問的話請以管理員身份運行cmd,文末參考資料有教程)sql

三.登陸

這時cmd中輸入mysql -u root -p就不須要密碼登陸了,出現password直接回車進入
但操做會受到限制,由於沒有權限數據庫

四.重設密碼

1.進入mysql數據庫:學習

mysql>use mysql;

2.爲root用戶設置新密碼ui

mysql> update user set password=password("這裏寫新密碼") where user="root"

3.刷新數據庫.net

mysql>flush privileges;

4.退出mysql命令行

mysql> quit

五.從新編輯my.ini

把剛纔加入的「skip-grant-tables」去掉,再重啓mysql

疑問與思考:

爲何重設密碼後就能解決問題呢?
在網上搜索了許多幾乎找到的只有解決方法
找到了如下幾種主要緣由僅供參考:
1.mysql.user表中沒有信息
2.root用戶沒有密碼

由於沒法還原以前的情景,因此仍是找不出具體的真正緣由啊哈哈
望有大神指教

參考資料:

mysql ERROR 1045 (28000): Access denied for user解決方法:https://blog.csdn.net/hsg77/a...

why we need --skip-grant-tables in mysql to remove error 1045:access denied ?what does it really do?:
https://stackoverflow.com/que...

"net start mysql"啓動MySQL服務報錯,提示發生系統錯誤5解決方法:https://blog.csdn.net/yhj1992...

深刻分析MySQL ERROR 1045 (28000):
https://www.linuxidc.com/Linu...

MySql經常使用命令:https://www.cnblogs.com/shenq...

相關文章
相關標籤/搜索