【发布时间】: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 更新它?
-
数据库不喜欢您的用户/密码组合。您确定您使用的是正确的用户吗?我猜它真的不应该是
root,root不应该从其他系统访问。 -
即使我用实例的 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