簡體   English   中英

Windows 上的 MySQL:用戶 'root'@'localhost' 的訪問被拒絕(使用密碼:YES)

[英]MySQL on Windows: Access Denied for User 'root'@'localhost' (using password: YES)

我在 Windows 上使用 MySQL(我希望我使用的是 Mac,但由於一些問題我正在使用 Bootcamp),我遇到了一個我認為我以前遇到過的問題:標題中寫的錯誤. 我想我之前可能已經通過控制面板擦除 MySQL 並從 ProgramFiles 中擦除隱藏文件夾、ProgramData 和 MySQL 中的所有內容,然后重新安裝來解決這個問題。 真是太麻煩了,而且要花很多時間。 如果我一次又一次地遇到這樣的錯誤,這絕對不是我可以反復做的事情來解決這個問題。

問題:

在“cd”到包含 mysql 的 bin 文件夾后,我只是在 CMD 上運行了這段代碼: mysql -u root -p PASSWORD但我得到了標題中寫的錯誤。 因此我無法登錄到 mysql 並運行任何行來編輯數據庫。

stackoverflow 中還有很多類似的主題:

  1. MySQL 錯誤::'拒絕用戶 'root'@'localhost' 的訪問

  2. 用戶 'root'@'localhost' 的訪問被拒絕(使用密碼:是)- 沒有權限?

  3. https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html

我嘗試從上面的三個鏈接實施解決方案。 許多其他建議建議使用“sudo”命令,它不是 Windows 命令。 這是我通過實施 dev.mysql.com (#3) 給我的解決方案得到的結果:

這是我在 CMD 中運行的代碼行:

mysqld --init-file=C:\\mysql-init.txt --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console

管理員命令 MySQL

這是我為實現鏈接 #2 中的解決方案而運行的代碼:

mysqld --skip-grant-tables --skip-networking --console

和我回來的代碼:

管理員命令 MySQL

注意事項:

  • 每次,我都會從控制台返回這行代碼:[Warning]...[Server] CA certificate ca.pem is self signed。
  • 在第一張圖片中,這是我從控制台得到的“錯誤”: [ERROR]...[Server] unknown variable 'defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini'
  • 在第二張圖片中,這是我從控制台得到的“錯誤”: [ERROR] TCP/IP --shared memory, or --named-pipe should be configured on NT OS
  • 這是我將放入 mysql-init.txt 中的代碼行: ALTER USER 'root'@'localhost' IDENTIFIED BY 'PASSWORDHERE';
  • 或者這樣: INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD')); GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION; INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD')); GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
  • 我通過安裝向導安裝了MySQL。

問:我是怎么遇到這個錯誤的?:

答:我正在試驗一個結合使用 JPA 和 JDBC 的后端 Spring Boot 項目。 我收到錯誤消息,告訴我無法配置任何數據源。

問:我的 root 密碼是如何重置的?

AI 認為它們由於 JPA 的數據源自動配置而被重置。 我自己沒有觸及 mysql 的任何設置。 我在 Spring Boot 上所做的一些事情及其對本地主機的自動配置必須重置密碼。

我會說卸載你的 MySQL,然后用一個新的實例再次安裝它,但不像只是從控制面板卸載它,這就是為什么你每次都面臨同樣的錯誤。 我已經在這里詳細回答了如何正確刪除,這樣創建新實例就不會出現錯誤。

對於使用以下命令初始化 mysql 服務器后遇到此問題的任何人:

mysqld --initialize

查看該過程的最后輸出,它應該是這樣的:

[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: password12345

有您的臨時密碼登錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM