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

本地Laravel项目连接外部服务器数据库报1045访问被拒绝如何解决

问题排查解决步骤

1. 修复database.php配置错误

你当前mysql2连接配置的核心错误是环境变量取值不匹配,.env中定义的是带_SECOND后缀的变量,但配置中读取的是默认连接的变量,需要修改两处:

  • host配置改为:'host' => env('DB_HOST_SECOND', '180.48.10.222'),
  • port配置改为:'port' => env('DB_PORT_SECOND', '3306'),
    同时注意你.env中定义的用户名为ExeUs,但报错中用户名为ExecUser,请检查.env中的用户名拼写是否和远程数据库一致。

2. 清除Laravel配置缓存

修改完配置后执行以下命令清除旧的配置缓存,确保新配置生效:

php artisan config:clear

3. 确认代码中指定了远程连接

Laravel默认会使用mysql连接(本地数据库),调用远程库时必须显式指定mysql2连接:

  • 查询构造器写法:DB::connection('mysql2')->table('value_list')->get()
  • 模型写法:在对应模型中添加属性 protected $connection = 'mysql2';

4. 验证远程数据库权限与网络连通性

如果修改配置后仍报错,需要排查远程数据库侧的配置:

  • 先在本地用MySQL客户端测试连接:mysql -h 180.48.10.222 -P 3306 -u ExeUs -p,输入密码后如果无法连接,说明问题和Laravel无关
  • 确认远程MySQL对应用户允许你本地IP访问,远程库执行授权命令:
GRANT ALL PRIVILEGES ON nsu.* TO 'ExeUs'@'你的本地公网IP' IDENTIFIED BY '远程数据库对应密码';
FLUSH PRIVILEGES;
  • 确认远程服务器的3306端口已对外开放,防火墙/安全组没有拦截你本地IP的访问请求

5. 校验密码正确性

确认.env中DB_PASSWORD_SECOND填写的是远程数据库对应用户的正确密码,不要包含多余空格、特殊字符未转义的问题。

内容的提问来源于stack exchange,提问作者Abdullah AL samir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:45:04