1. 程式人生 > >BUG筆記 1.0

BUG筆記 1.0

似乎只要coding,這些程式碼就要跟我過不去似的

今天在linux上安裝了mysql-server,想不到竟然被一個及其簡單的問題給難住了。
是的,我竟然無法登陸!!!
在論壇,百度,google上苦苦搜尋了半天,終於找到了問題所在。本質上還是自己資料庫學習的不夠紮實導致的問題。
廢話不多說,直接上問題和解決方法。

問題描述

在ubuntu中安裝mysql已經極其方便,只需要使用一個指令就ok了:

sudo apt install mysql-server

 

目前安裝的是5.7版(一直很疑惑為什麼5.7之後就是8.0了?)

但是在安裝完畢之後,出現了兩個及其奇怪的問題:

  1. 在root賬戶下根本無需密碼就能登陸
  2. 在一般使用者賬戶下無論怎麼樣都無法登陸

解決方案

網上的解決方案大都是很久之前的了,因此不是欄位錯誤,就是無法解決問題。 其實,問題是出在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使用者下的自動登陸的現象也會取消了。
於是接下來便是更改密碼的流程了,這比較簡單,但是還是有坑:

update user set authentication_string=password('enter ur passwd'), plugin='mysql_native_password' where user='root';

需要注意的是,mysql5.7之後user中原本的password欄位已經變更為 authentication_string 欄位,因此如果按照網上大部分的回答來更改的話也會出現問題。
至此,問題已經基本解決,小小的問題還是花了不少的時間。

引用

[1] codekongs, https://blog.csdn.net/bingjianit/article/details/82780535