Ubuntu 24.04 安裝 MariaDB 后 root 密碼未知?解決方案在此
在 Ubuntu 24.04 上新安裝 MariaDB 后,許多用戶會發現自己不知道 root 用戶的密碼,甚至在安裝過程中也沒有提示設置密碼。這是因為在較新的 MariaDB 版本中,默認情況下 root
用戶采用了 unix_socket
身份驗證插件。這意味著您可以使用操作系統的 root
用戶權限直接登錄 MariaDB,而無需輸入密碼。
本文將為您詳細解釋如何解決這個問題,并為您提供設置新密碼的多種方法。
方法一:使用 mysql_secure_installation
腳本 (推薦)
這是最推薦、最安全且最簡單的方法。mysql_secure_installation
是一個隨 MariaDB 一同安裝的腳本,旨在幫助用戶進行基本的安全設置,包括設置 root 密碼。
步驟如下:
以 root 用戶權限運行腳本:
打開終端,輸入以下命令:
sudo mysql_secure_installation
切換到密碼驗證:
腳本會首先詢問您是否想切換到 unix_socket 身份驗證之外的方式。為了能使用密碼登錄,請輸入 Y 并按回車。
設置新密碼:
接下來,系統會提示您為 MariaDB 的 root 用戶設置新密碼。輸入您想要設置的強密碼并再次輸入以確認。
完成安全設置:
腳本還會詢問您是否要移除匿名用戶、禁止 root 用戶遠程登錄、移除測試數據庫等。出于安全考慮,建議對這些選項都選擇 Y (是)。
完成以上步驟后,您的 MariaDB root
用戶就已經設置了新密碼。您現在可以使用以下命令通過密碼登錄:
sudo mysql -u root -p
然后輸入您剛剛設置的密碼即可。
方法二:手動更改 root 用戶密碼
如果您不想運行 mysql_secure_installation
腳本,也可以手動更改 root
用戶的密碼。
步驟如下:
以 root 權限登錄 MariaDB:
由于默認使用 unix_socket 認證,您可以直接使用 sudo 命令免密登錄。
sudo mysql -u root
更改 root 用戶的認證方式和密碼:
進入 MariaDB 命令行后,執行以下 SQL 語句來更改 root 用戶的認證插件為 mysql_native_password 并設置新密碼。請將 YourStrongPasswordHere 替換為您自己的強密碼。
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('YourStrongPasswordHere');
刷新權限:
為了使更改立即生效,需要刷新權限。
FLUSH PRIVILEGES;
退出并測試:
輸入 EXIT; 退出 MariaDB 命令行。現在,您應該可以使用新設置的密碼登錄了。
sudo mysql -u root -p
方法三:當無法登錄時重置 root 密碼
在極少數情況下,如果您已經更改了密碼但忘記了,或者上述方法因某種原因無法奏效,您可以通過以下步驟重置 root
密碼。
步驟如下:
停止 MariaDB 服務:
sudo systemctl stop mariadb
以安全模式啟動 MariaDB (跳過授權表):
sudo mysqld_safe --skip-grant-tables &
此命令會在后臺以不檢查權限的方式啟動 MariaDB。
免密登錄 MariaDB:
sudo mysql -u root
重置密碼:
進入 MariaDB 命令行后,執行以下命令來設置新密碼。同樣,請將 YourNewStrongPasswordHere 替換為您自己的強密碼。
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPasswordHere';
正常重啟 MariaDB:
首先,停止以安全模式運行的 MariaDB 進程。您可能需要使用 kill 命令。
sudo killall mysqld_safe sudo killall mysqld
然后,正常啟動 MariaDB 服務。
sudo systemctl start mariadb
現在,您應該可以使用新重置的密碼登錄 MariaDB 了。
總結
對于 Ubuntu 24.04 上新安裝的 MariaDB,root
用戶默認使用 unix_socket
認證,允許通過 sudo
免密登錄。通過 mysql_secure_installation
腳本設置密碼是最推薦的方法。如果需要,也可以手動更改或在忘記密碼時進行重置。我們強烈建議您為 root
用戶設置一個強密碼以保障數據庫的安全。