MySQL 8.0 在 Ubuntu 22.04 中默認啟用了 auth_socket
認證方式(而非密碼認證),導致 mysql_secure_installation
跳過了 root 密碼設置。這會直接影響后續用 Navicat 連接 MySQL(因為 Navicat 需要密碼登錄),必須手動調整 root 用戶的認證方式并設置密碼。
核心問題:auth_socket
認證的限制
auth_socket
認證通過 Linux 系統用戶身份 驗證 MySQL 登錄(而非密碼),特點是:
- 僅允許通過
sudo mysql
(以 Linux root 身份)登錄 MySQL root 賬號; - 無法用密碼登錄(即使設置密碼也無效),更無法通過 Navicat 等工具遠程 / 本地連接。
因此,必須將 root 用戶的認證方式改為 mysql_native_password
(密碼認證),才能用 Navicat 連接。
解決步驟:切換認證方式 + 設置 root 密碼
1. 用 sudo mysql
登錄 MySQL(無需密碼,因 auth_socket
認證)
sudo mysql -u root
執行后會直接進入 MySQL 命令行(顯示 mysql>
)。
2. 執行 SQL 命令,切換認證方式并設置密碼
在 MySQL 命令行中輸入以下命令(替換