似乎只要coding,這些代碼就要跟我過不去似的 今天在linux上安裝了mysql-server,想不到竟然被一個及其簡單的問題給難住了。 是的,我竟然無法登陸!!! 在論壇,百度,google上苦苦搜尋了半天,終於找到了問題所在。本質上還是自己資料庫學習的不夠扎實導致的問題。 廢話不多說,直接上 ...
似乎只要coding,這些代碼就要跟我過不去似的
今天在linux上安裝了mysql-server,想不到竟然被一個及其簡單的問題給難住了。
是的,我竟然無法登陸!!!
在論壇,百度,google上苦苦搜尋了半天,終於找到了問題所在。本質上還是自己資料庫學習的不夠扎實導致的問題。
廢話不多說,直接上問題和解決方法。
問題描述
在ubuntu中安裝mysql已經極其方便,只需要使用一個指令就ok了:
sudo apt install mysql-server
目前安裝的是5.7版(一直很疑惑為什麼5.7之後就是8.0了?)
但是在安裝完畢之後,出現了兩個及其奇怪的問題:
- 在root賬戶下根本無需密碼就能登陸
- 在一般用戶賬戶下無論怎麼樣都無法登陸
解決方案
網上的解決方案大都是很久之前的了,因此不是欄位錯誤,就是無法解決問題。 其實,問題是出在mysql資料庫中的user表的plugin欄位上面
下麵先切換至root用戶,再進入mysql中查看問題到底出在哪(此時應該是可以直接輸入mysql進入的,不用指定user和passwd):
1 use mysql 2 select user, plugin from user; 3 +------------------+-----------------------+ 4 | user | plugin | 5 +------------------+-----------------------+ 6 | root | auth_socket | 7 | mysql.session | mysql_native_password | 8 | mysql.sys | mysql_native_password | 9 | debian-sys-maint | mysql_native_password | 10 +------------------+-----------------------+
auth_socket影響什麼怪我學藝不精暫時還沒弄明白
但是可以確定的是,只有將plugin欄位更改成mysql_native_password才能利用賬戶密碼登陸,同時root用戶下的自動登陸的現象也會取消了。
於是接下來便是更改密碼的流程了,這比較簡單,但是還是有坑:
需要註意的是,mysql5.7之後user中原本的password欄位已經變更為 authentication_string 欄位,因此如果按照網上大部分的回答來更改的話也會出現問題。
至此,問題已經基本解決,小小的問題還是花了不少的時間。
引用
[1] codekongs, https://blog.csdn.net/bingjianit/article/details/82780535