设置 Navicat 远程连接本地数据库
1️⃣ 确保 MySQL 允许远程访问
登录 MySQL:
sh
sudo mysql -u root -p① 查看 root 用户权限
sql
SELECT Host, User FROM mysql.user;如果 root 用户的 Host 只允许 localhost,则需要修改它。
② 允许 root 远程访问
sql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;'%'代表 允许所有 IP 连接(如果你要指定特定 IP,可改成'你的IP地址')。mysql_native_password让 MySQL 使用传统密码验证方式(Navicat 兼容)。
③ 创建新用户(推荐)
如果不想直接用 root 远程连接,可以创建一个新用户:
sql
CREATE USER 'navicat_user'@'%' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'navicat_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;这样,navicat_user 可以从任何 IP 连接 MySQL。
如果你的 mysql.user 表中显示了不同的用户及其 Host 访问限制,其中:
tst和tst1允许从 任何 IP(%) 访问root只允许从 localhost 访问(意味着你 不能远程用 root 账号登录)

💡 解决方案
如果你想使用 root 远程登录 MySQL,你需要 修改 root 用户的 Host 设置。
✅ 方法 1:直接修改 root 允许远程访问
1️⃣ 登录 MySQL
sh
sudo mysql -u root -p2️⃣ 修改 root 允许远程访问
sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;📌 解释:
- 让
root用户可以从任何 IP (%)连接。 - 使用
mysql_native_password方式兼容 Navicat 连接。 GRANT ALL PRIVILEGES让 root 有全权限。
✅ 方法 2:创建新用户(推荐)
不建议直接用 root 远程连接,可以创建一个独立用户:
sql
CREATE USER 'navicat_user'@'%' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'navicat_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;然后,在 Navicat 中用 navicat_user 连接。
🔍 检查 MySQL 配置
修改 MySQL 监听地址,确保 MySQL 允许远程访问。
1️⃣ 打开 MySQL 配置文件
sh
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf2️⃣ 找到 bind-address 这一行:
ini
bind-address = 127.0.0.1修改为:
ini
bind-address = 0.0.0.03️⃣ 保存 & 退出(按 Ctrl + X → Y → Enter)
4️⃣ 重启 MySQL
sh
sudo systemctl restart mysql🚀 现在,你可以尝试用 Navicat 连接
- 主机:
192.168.1.17 - 端口:
3306 - 用户名:
root或navicat_user - 密码:你在 MySQL 里设置的密码
- 编码:
utf8mb4
然后点击 "测试连接",如果成功 🎉 你就可以远程管理 MySQL 了!🚀
如果遇到错误,告诉我 具体的错误信息,我帮你排查!