Skip to content

设置 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 访问限制,其中:

  • tsttst1 允许从 任何 IP(%) 访问
  • root 只允许从 localhost 访问(意味着你 不能远程用 root 账号登录

An image

💡 解决方案

如果你想使用 root 远程登录 MySQL,你需要 修改 root 用户的 Host 设置

✅ 方法 1:直接修改 root 允许远程访问

1️⃣ 登录 MySQL

sh
sudo mysql -u root -p

2️⃣ 修改 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.cnf

2️⃣ 找到 bind-address 这一行

ini
bind-address = 127.0.0.1

修改为

ini
bind-address = 0.0.0.0

3️⃣ 保存 & 退出(按 Ctrl + XYEnter

4️⃣ 重启 MySQL

sh
sudo systemctl restart mysql

🚀 现在,你可以尝试用 Navicat 连接

  • 主机192.168.1.17
  • 端口3306
  • 用户名rootnavicat_user
  • 密码:你在 MySQL 里设置的密码
  • 编码utf8mb4

然后点击 "测试连接",如果成功 🎉 你就可以远程管理 MySQL 了!🚀

如果遇到错误,告诉我 具体的错误信息,我帮你排查!