面,我介紹了一下安裝mysql後登陸mysql時會遇到error 1045 (28000): access denied for user
'root'@'localhost' (using password: no)
這個錯誤,當時不知道真正的原因,搜尋了一些網上的資料,測試驗證了如何解決這個問題,但是一直不知道具體的原因。今天終于把這個問題給徹底搞清楚了。
下面我以mysql 5.6.20為例子,刨析一下這個錯誤的真正原因,如下所示
mysql
的安裝日志資訊中,你會看到mysql生成了root使用者的随機密碼(如下截圖所示),并将這個随機密碼放置在/root/.mysql_secret
中。并且強制在第一次登陸時修改root使用者的密碼。mysql
5.6及以後版本出處于安全考慮,root密碼不為空。是以在mysql的安裝過程中,會生成一個随機密碼,但是對于我們這樣的初學者,不了解情況,于是
便從網上搜尋如何解決問題的資料,而問題關鍵在此,很多做技術的人,了解不夠深入,又喜歡随波逐流,停留在問題的表層,并未深入研究。而高手又不屑于這類
簡單的問題。
a random password has been set for the mysql root user !
you will find that password in '/root/.mysql_secret'.
you must change that password on your first connect,
no other statement but 'set password' will be accepted.
see the manual for the semantics of the 'password expired' flag.
also, the account for the anonymous user has been removed.
知道了錯誤的前因後果,那麼很容易就搞定這個問題了。找到随機密碼,登入資料庫後修改密碼。問題解決