You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel框架与Navicat连接失败求助:提示'root@172.16.0.97'访问被拒

Laravel连接Navicat管理的公司数据库解决方法

核心问题说明

你遇到的Access denied for user 'root@172.16.0.97'是数据库用户权限限制导致的,Laravel是直接连接数据库服务器,Navicat只是数据库管理工具,两者的连接本质都是对接同一台数据库服务器,所以先解决权限和配置问题。


1. 检查并配置数据库用户访问权限

登录数据库服务器(可以用Xampp的phpMyAdmin,或者用Navicat直接连接数据库服务器),执行以下SQL:

-- 查看root用户的允许访问IP
SELECT user, host FROM mysql.user WHERE user='root';
  • 如果结果里没有172.16.0.97或者通配符%(允许所有IP访问),执行授权语句:
-- 给root用户授权从172.16.0.97访问的权限(建议限定到具体数据库,不要用*.*)
GRANT ALL PRIVILEGES ON `你的数据库名`.* TO 'root'@'172.16.0.97' IDENTIFIED BY '你的数据库密码' WITH GRANT OPTION;
-- 刷新权限生效
FLUSH PRIVILEGES;

2. 修正Laravel的.env配置并清除缓存

确保.env文件的数据库参数和Navicat连接公司数据库的信息完全一致:

DB_CONNECTION=mysql
DB_HOST=公司数据库的真实IP地址(不是127.0.0.1,填Navicat连接时用的主机地址)
DB_PORT=3306(默认端口,若公司修改过则填对应端口)
DB_DATABASE=你需要连接的数据库名称(Navicat中显示的库名)
DB_USERNAME=数据库登录用户名(比如root,或公司分配的专用账号)
DB_PASSWORD=数据库登录密码

修改完成后,清除Laravel的配置缓存:

php artisan config:clear
php artisan config:cache

3. 验证网络连通性

  • 用ping命令测试本地到公司数据库的网络连通:
    ping 公司数据库IP地址
    
  • 若ping不通,联系公司IT开放本地IP访问数据库服务器3306端口的权限;
  • 若ping通,用telnet测试端口是否开放:
    telnet 公司数据库IP地址 3306
    

4. 排查Navicat显示问题

如果Navicat连接后无内容,先确保Navicat连接配置正确:

  • 新建Navicat MySQL连接,填写正确的主机、端口、用户名、密码,点击「测试连接」确认成功;
  • 若连接成功但看不到数据库,说明当前用户没有该数据库的访问权限,需要给用户授权对应数据库的权限(参考步骤1的授权语句)。

内容的提问来源于stack exchange,提问作者syahmi najmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 00:13:19