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

部署于Google Cloud Platform的Laravel+MySQL应用出现500服务器错误及数据库连接权限问题求助

部署于Google Cloud Platform的Laravel+MySQL应用出现500服务器错误及数据库连接权限问题求助

看起来你的核心问题出在数据库连接配置不匹配以及GCP MySQL实例的权限限制上,这直接导致了500错误和连接被拒绝的问题。我给你一步步拆解解决:

1. 先修正Laravel的.env配置

你的.env里数据库相关配置是针对本地环境的,完全不匹配GCP的MySQL实例:

  • DB_HOST:不能用127.0.0.1,要换成GCP MySQL实例的公网IP(你可以在GCP控制台的SQL实例详情页找到)
  • DB_USERNAME和DB_PASSWORD:要和你在GCP创建MySQL实例时设置的用户名密码一致(注意:GCP的MySQL默认root用户可能需要额外授权,后面会说)
  • APP_URL:改成你GCP应用的公网访问地址(比如实例的IP或者绑定的域名)
  • APP_ENV:建议改成production,调试阶段可以先把APP_DEBUG设为true,这样500错误会显示具体的报错信息,方便你排查

修正后的.env数据库部分示例:

APP_ENV=production
APP_DEBUG=true
APP_URL=http://你的GCP应用公网IP
DB_CONNECTION=mysql
DB_HOST=你的GCP MySQL实例公网IP
DB_PORT=3306
DB_DATABASE=tabiboba
DB_USERNAME=root
DB_PASSWORD=你在GCP设置的MySQL密码

2. 解决GCP MySQL的权限问题

你遇到的Access denied for user 'root'@'35.204.189.236'错误,是因为GCP MySQL实例默认只允许特定IP访问,并且用户的主机权限没有开放:

  • 步骤一:授权Cloud Shell的IP访问
    登录GCP控制台,进入你的SQL实例 → 点击连接 → 在授权网络里添加35.204.189.236/32这个IP(就是你Cloud Shell的来源IP),保存设置。
  • 步骤二:调整MySQL用户的主机权限
    通过GCP控制台的SQL实例 → 用户页面,找到root用户,把主机从localhost改成%(表示允许从任意IP访问,调试完成后建议改回特定IP更安全),或者直接添加一个新用户,主机设置为35.204.189.236。

3. 部署后刷新Laravel缓存

Laravel会缓存配置文件,所以修改.env后一定要在GCP环境里执行以下命令(可以通过Cloud Shell进入你的应用目录):

php artisan config:cache
php artisan cache:clear
php artisan view:clear

4. 验证数据库连接

在Cloud Shell里用mysql命令测试连接,确认配置正确:

mysql -h 你的MySQL实例公网IP -u root -p

输入密码后如果能成功进入MySQL控制台,说明连接没问题,再重新访问你的Laravel应用,500错误应该就消失了。

如果还是有问题,打开APP_DEBUG=true后查看具体的报错信息,比如是不是数据库不存在、表结构不对,或者缓存没清干净。

备注:内容来源于stack exchange,提问作者za_ali33

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 14:48:12