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

如何获取部署在AWS的Laravel应用RDS MySQL数据库凭证?

如何获取Laravel应用的RDS数据库凭证?

问题背景

我接手了一个部署在AWS上的PHP/Laravel应用,使用MySQL RDS数据库,由Nginx托管应用内容。应用运行正常,但我没有数据库凭证,无法访问数据库:

  • 查看config/database.php,发现数据库配置均通过env()函数读取环境变量,无硬编码凭证
  • 执行printenv命令检查服务器全局环境变量,未找到DB_USERNAME、DB_PASSWORD等相关变量
  • 之前的开发者已停止配合,无法直接获取凭证

解决方案

1. 查找Laravel项目根目录的.env文件

Laravel默认通过项目根目录的.env文件存储环境变量。根据Nginx配置,应用的public_html目录在/var/www/project/public_html,因此项目根目录为/var/www/project,前往该目录查找隐藏的.env文件:

# 进入项目根目录
cd /var/www/project
# 查看.env文件内容
cat .env
# 若看不到文件,用ls -a列出所有隐藏文件
ls -a

2. 检查PHP-FPM的环境变量配置

如果服务器未设置全局环境变量,可能是在PHP-FPM的池配置中单独定义了数据库相关变量。常见配置路径:

  • /etc/php-fpm.d/www.conf
  • /etc/php/{你的PHP版本}/fpm/pool.d/www.conf(比如/etc/php/8.1/fpm/pool.d/www.conf)

打开配置文件,查找以env[DB_*]开头的配置项:

env[DB_HOST_WRITE] = "your-rds-endpoint"
env[DB_USERNAME] = "database-username"
env[DB_PASSWORD] = "database-password"

若修改了配置,需重启PHP-FPM生效:

systemctl restart php-fpm

3. 通过AWS RDS控制台重置密码

若无法找到现有凭证,可以通过AWS控制台重置RDS数据库的主密码:

  1. 登录AWS控制台,进入RDS服务
  2. 找到对应的数据库实例,点击实例名称进入详情页
  3. 点击操作 -> 修改
  4. 在“数据库选项”区域找到“主密码”,输入新密码并确认
  5. 滚动到页面底部,点击继续,选择立即应用修改,等待实例更新完成
  6. 重置密码后,需要将新密码同步到应用的环境配置(.env或PHP-FPM配置)中

4. 临时输出应用运行时的数据库配置

可以在Laravel项目中临时创建一个测试脚本,查看应用实际使用的数据库配置:
在/var/www/project/public_html目录下创建test-db-config.php文件,内容如下:

<?php
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/app.php';

// 输出MySQL连接配置
echo "<pre>";
print_r(config('database.connections.mysql'));
echo "</pre>";

访问http://mytable.sa/test-db-config.php即可看到应用当前使用的数据库连接参数,使用完毕后务必删除该文件,避免泄露敏感信息。

5. 检查Nginx的fastcgi_params配置

查看Nginx的fastcgi_params文件(通常路径为/etc/nginx/fastcgi_params),确认是否通过fastcgi_param指令直接传递了数据库环境变量:

fastcgi_param DB_USERNAME "db-username";
fastcgi_param DB_PASSWORD "db-password";

内容的提问来源于stack exchange,提问作者Simple Fellow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:17:07