在Ubuntu 20.04 LTS上,MySQL 8.0默認使用auth_socket插件進行身份驗證,可能存在意想不到的情況。
一、auth_socket插件
在使用sudo mysql或通過sudo切換用戶后執行任何MySQL命令時,不需要輸入密碼或錯誤密碼都可以正常登入mysql數據庫,這是因為auth_socket插件利用了Linux的socket機制來驗證用戶,這種方式不需要密碼,而是依賴于當前用戶已經通過sudo獲得了足夠的權限。
優勢:
1、安全性:使用auth_socket插件可以減少安全風險,因為不需要在命令行中輸入密碼。這對于自動化腳本或服務尤其有用,因為腳本通常以非交互方式運行,并且不希望包含密碼。
2、便捷性:對于需要頻繁訪問MySQL數據庫的管理員來說,使用sudo mysql命令而不需要輸入密碼可以大大提高工作效率。
劣勢:
1、任何擁有sudo權限的用戶,都可以訪問mysql數據庫。
二、查看身份認證方式
select host,user,plugin from mysql.user;
備注:沒有auth_socket插件
三、更換身份認證方式
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘1234#ASD’ PASSWORD EXPIRE NEVER;
附:Mysql加固
安裝完成后,建議使用命令mysql_secure_installation進行加固。
運行mysql_secure_installation腳本可以設置root密碼,刪除匿名用戶,禁止root遠程登錄,以及刪除測試數據庫等。