前言:
今天安裝了MySQL,本來可以避免這個問題的,但是由於我的一時疏忽,整出了這個錯誤。那就解決唄!!!
錯誤起因:
我是按照這篇博客裝的:https://blog.csdn.net/qq_43437122/article/details/103551878
本來初次登錄時不需要密碼的,但是我撒呼呼的給弄錯了,我就以爲需要密碼但是我不知道,我就去百度如何重置密碼。結果是
那篇博客讓修改配置文件,然後執行update user set password = ‘123456’ where user =“root” 命令來更新密碼,其實這樣
寫是錯誤的,然後就導致了我這個錯誤。
錯誤解決
網上都是說root權限的錯誤,但是我試了之後沒用,依然報這個錯誤:access denied for user ‘’@‘localhost’ to database
‘database_name’ 。
此時可能你輸入"mysql" “mysql -u root” “mysql -u root -p” 等等都能進入mysql,但是就是沒有mysql表,因爲這時存在一個“空用
戶”。“空用戶”即是user列爲空,它可以匹配一切用戶名,所以此時你以任何方式登錄都行,但是登錄後的權限不夠,所以就沒有
mysql等系統表,解決方式如下:
1. 關閉mysql服務
2. 忽略權限登錄
2.1 執行命令:
mysqld_safe --skip-grant-tables
執行後會顯示:daemon from …啥的信息,再打開一個新窗口
2.2 新打開一個窗口,並執行命令:
mysql -u root
3. 執行以下命令:
use mysql
select * from user where user='' //如果有數據,那麼你的問題基本就可以確定了
delete from user where user='';
flush privileges; //重載權限表
最後那個重載權限命令一定別忘了執行。。。
4. 重啓服務
如果重啓MySQL服務失敗的話,那就重啓下機器就行了。再進入mysql你會返現一切正常。