【问题标题】:Getting 500 error on Laravel MySQL application hosted on Google Cloud Platform在 Google Cloud Platform 上托管的 Laravel MySQL 应用程序出现 500 错误
【发布时间】:2023-01-25 19:26:57
【问题描述】:

我有一个使用 MySQL 托管在谷歌云平台 (GCP) 上的 Laravel 应用程序。我能够成功地在谷歌云平台上构建和部署。当我访问站点 url 时出现 500 服务器错误。我还创建了一个 MySQL 实例并导入了 SQL 文件。 这是我的 .env 文件。

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:+ly4U3QbWcULnj0A31g41q7Yim/L0W5olgwPbsuD1/A=
APP_DEBUG=false
APP_URL=http://127.0.0.1:8080

LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=tabiboba
DB_USERNAME=root
DB_PASSWORD=root

BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DRIVER=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

MEMCACHED_HOST=127.0.0.1

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

我不知道为什么我会收到 500 错误。我假设它必须对数据库连接做一些事情,所以当我去谷歌云外壳时,我得到Access denied for user 'root'@'35.204.189.236' (using password: YES)

请让我知道我在这里错过了什么:(

【问题讨论】:

  • 这里有很多可能出错的地方,但对我来说最明显的是 1) 用户是否存在并且密码是否正确并且主机是否被允许?,以及 2) 对于您的应用程序本身,您有 @987654326 @,但是您使用的是不在本地托管的云 SQL 实例,您是否在应用程序的计算机上运行 CloudSqlProxy 以使 localhost 有效,或者您应该使用 SQL 实例的 IP 更新它?
  • 数据库不喜欢您的用户/密码组合。您确定您使用的是正确的用户吗?我猜它真的不应该是rootroot 不应该从其他系统访问。
  • 即使我用实例的 IP 地址更新 db_host,我仍然会收到 500 错误。 @aynber roote 用户存在于实例的用户列表中。这是默认用户。
  • @za_ali33 没有 root 用户这样的东西。在 mysql 中,用户名有两部分:用户 ID(这是 root)和主机名。您是否有用户使用错误消息中的主机名或使用 %?
  • 是的,mysql 默认有一个root 用户,但默认情况下,root 只能从本地主机或白名单 IP 访问数据库。 Root 应该永远无法从任何地方访问。您应该创建一个对数据库具有特定访问权限的专用用户,并使用它。 support.google.com/appsheet/answer/10107301?hl=en 有一些关于如何做到这一点的信息。

标签: php mysql laravel google-cloud-platform google-cloud-instances


【解决方案1】:

您提到的初始错误是与访问相关的问题,可能由于多种原因而发生:

  • 连接到错误的主机:尝试直接连接主机并 确认正确的主机
  • 用户不存在:创建一个新用户并尝试连接
  • 用户存在但客户端主机没有连接权限:授予 许可,然后尝试使用它进行连接。
  • 密码不正确,或密码输入过程中的一些字符问题: 尝试使用众所周知的密码并检查是否存在任何字符问题 密码被盗

您还应该检查是否尝试从与定义的主机名不同的主机访问服务器。确保您连接的 IP 地址已获得 Cloud SQL 实例的授权,请参阅documentation for information on authorizing connections

还要检查 Google Cloud SQL 数据库权限并验证您的 MySQL 登录是否已“授予”登录权限。转到 Google Cloud SQL 控制台>转到“用户”选项卡>选择您的用户名>验证主机是您的公共 IP 地址或者可选地使用 % 来表示任何主机。 您可以使用 Cloud SQL Proxy 访问 Cloud SQL。这是安全的,您不需要 Cloud SQL 的 IP 地址。

另请查看这些链接以了解类似问题:

【讨论】:

    猜你喜欢
    • 2016-11-05
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2016-05-24
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多