MySQL報(bào)錯(cuò)ERROR 1045 (28000): Access Denied的終極解決方案
mac 數(shù)據(jù)庫又忘記密碼了,記錄一下更改密碼! 核心思路是:
- 跳過權(quán)限驗(yàn)證進(jìn)入 MySQL。
- 修復(fù)用戶或密碼。
- 恢復(fù)權(quán)限表。
錯(cuò)誤場景復(fù)現(xiàn)
執(zhí)行以下命令時(shí)被拒絕訪問:
mysql -u root -p < /var/lib/mysql-files/reset.sql # 或 sudo /usr/local/mysql/bin/mysql -u root -p < /var/lib/mysql-files/reset.sql
輸入密碼后提示:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
原因分析
- 密碼錯(cuò)誤:輸入的
root密碼不正確。 - 權(quán)限缺失:
root@localhost用戶不存在或權(quán)限被限制。 - MySQL 服務(wù)異常:權(quán)限表未正確加載或損壞。
- 路徑問題:使用了錯(cuò)誤的 MySQL 客戶端或服務(wù)路徑。
解決方案(親測有效)
步驟 1:重置 root 密碼(核心步驟)
停止 MySQL 服務(wù):
sudo /usr/local/mysql/support-files/mysql.server stop
如果提示找不到命令,嘗試:
sudo brew services stop mysql # Homebrew 安裝的 MySQL
以安全模式啟動 MySQL(跳過權(quán)限驗(yàn)證):
sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
成功啟動后,終端會卡?。@示 Starting mysqld daemon with databases...),這是正常現(xiàn)象。
無密碼登錄 MySQL:
/usr/local/mysql/bin/mysql -u root
更新 root 密碼(MySQL 5.7+):
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密碼'; FLUSH PRIVILEGES; exit;
如果報(bào)錯(cuò) ERROR 1396,可能是用戶不存在,需先創(chuàng)建用戶(見步驟 2)。
重啟 MySQL 服務(wù):
sudo /usr/local/mysql/support-files/mysql.server restart
步驟 2:檢查 root 用戶權(quán)限(備用方案)
如果重置密碼后仍無法登錄,可能是 root@localhost 用戶不存在或權(quán)限不足:
以安全模式登錄后執(zhí)行:
SELECT host, user FROM mysql.user;
如果缺少 root@localhost,手動創(chuàng)建:
CREATE USER 'root'@'localhost' IDENTIFIED BY '你的密碼'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
步驟 3:驗(yàn)證 MySQL 路徑
確認(rèn)客戶端路徑是否正確:
which mysql # 應(yīng)返回 /usr/local/mysql/bin/mysql 或 /usr/local/opt/mysql/bin/mysql
如果路徑不一致,使用絕對路徑執(zhí)行命令:
sudo /usr/local/mysql/bin/mysql -u root -p
步驟 4:檢查文件權(quán)限
確保 reset.sql 文件可讀:
ls -l /var/lib/mysql-files/reset.sql sudo chmod 644 /var/lib/mysql-files/reset.sql # 如果權(quán)限不足
步驟 5:查看 MySQL 錯(cuò)誤日志
定位更深層次的問題:
sudo tail -n 50 /usr/local/mysql/data/*.err
到此這篇關(guān)于MySQL報(bào)錯(cuò)ERROR 1045 (28000): Access Denied的終極解決方案的文章就介紹到這了,更多相關(guān)MySQL報(bào)錯(cuò)ERROR 1045內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL刪除binlog日志文件的三種實(shí)現(xiàn)方式
本文介紹了三種刪除MySQL binlog日志文件的方法,包含手動刪除、使用SQL命令刪除和設(shè)置自動清理,具有一定的參考價(jià)值,感興趣的可以了解一下2025-02-02
navicat連接mysql時(shí)出現(xiàn)1045錯(cuò)誤的解決方法
這篇文章主要為大家詳細(xì)介紹了navicat連接mysql時(shí)出現(xiàn)1045錯(cuò)誤的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
深入研究mysql中的varchar和limit(容易被忽略的知識)
這篇文章主要介紹了深入研究mysql中的varchar和limit(容易被忽略的知識),本文探究了varchar(5)可以存儲多少個(gè)漢字、多少個(gè)字母數(shù)字和mysql中的limit你真的會用嗎兩個(gè)知識點(diǎn),需要的朋友可以參考下2015-03-03
將數(shù)據(jù)插入到MySQL表中的詳細(xì)教程
這篇文章主要介紹了將數(shù)據(jù)插入到MySQL表中的詳細(xì)教程,文中給出了在PHP腳本中操作的示例,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-05-05

