背景
新裝MySQL 5.7, Ubuntu1804。
數據庫 root 賬戶已經設置了密碼。
使用本地root賬戶可免密碼登錄,即使指定-p也免密碼;本地非root賬戶無法登錄。
Datagrip登錄報
The specified database user/password combination is rejected。
排查過程
首先以爲是沒配置user.Host字段,改成%後外部仍然無法登錄。
百度了一圈,發現這篇文章,但我數據庫里根本沒有空用戶。
又百度了一會無果,開始自己摸索。
首先查看mysql.user表中所有的字段。
看了一圈,發現root賬戶中有個值怪怪的。
plugin -> auth_socket
因爲不是專業DBA,沒深入瞭解過這些,百度走起:
找到了這篇文章。
雖然翻譯的感覺像是谷歌機翻,但這不妨礙我們幹活。
簡單說,auth_socket是通過本地 .sock文件的方式來進行通信,也就是,只有能訪問那個文件的用戶才能登錄root。
這也解釋了爲什麼普通用戶無法訪問:因爲sock文件權限是mysql:mysql。
除了mysql組成員,只有root管理員可以訪問。
改成 mysql_native_password後,問題解決。
快速解決的方法
本來打算貼一下處理方法的,但在寫文章的時候,意外在網上發現了這個問題的解決方案,就不造輪子了~
以上~