设置 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 -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 + X
→ Y
→ Enter
)
4️⃣ 重启 MySQL
sh
sudo systemctl restart mysql
🚀 现在,你可以尝试用 Navicat 连接
- 主机:
192.168.1.17
- 端口:
3306
- 用户名:
root
或navicat_user
- 密码:你在 MySQL 里设置的密码
- 编码:
utf8mb4
然后点击 "测试连接",如果成功 🎉 你就可以远程管理 MySQL 了!🚀
如果遇到错误,告诉我 具体的错误信息,我帮你排查!