MySQL1045錯誤解決方法(ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using passwor:yes))

2020-09-19 16:00:21

登入資料庫時,發現資料庫連線不上,報錯如下:

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

為了以後方便排查,這裡記錄一下。

首先,停止MySQL服務

service mysqld stop

既然是密碼錯誤,那麼就先跳過密碼驗證的步驟

#vim /etc/my.cnf

然後,搜尋mysqld,找到[mysqld](port=3306上面那個):

/mysqld(在vim編輯狀態下直接輸入該命令可搜尋文字內容)。

:windows下修改的是my.ini。

在 [mysqld] 底下新增語句:

skip-grant-tables

(注:skip-grant-tables:不啟動grant-tables授權表,作為啟動引數的作用:MYSQL伺服器不載入許可權判斷,任何使用者都能存取資料庫)

這是用來跳過密碼驗證的,新增之後儲存退出。

重新啟動MySQL服務

進入MySQL

mysql -u root -p

出現密碼輸入時,不用輸入直接按回車,就可以不用密碼就能登入

修改密碼

mysql> update user set password=password(「新密碼」) where user=」使用者名稱」;

如果報錯:

ERROR 1054(42S22) Unknown column 'password' in 'field list'

原因: 5.7版本下的mysql資料庫下已經沒有password這個欄位了,password欄位改成了authentication_string

mysql> update user set authentication_string=password(「新密碼」) where user=」使用者名稱」;

#重新整理MySQL許可權相關的表
mysql> flush privileges;
mysql> exit;

密碼修改完畢

編輯my.cnf(Windows下my.ini),將上面新增的內容去掉(skip-grant-tables)。

重新啟動MySQL

使用新密碼登入即可