Laravel框架与Navicat连接失败求助:提示'root@172.16.0.97'访问被拒
核心问题说明
你遇到的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
相关产品推荐
相关产品推荐

