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 命令行中输入以下命令(替换