Laravel配置双PostgreSQL数据库时出现postgres用户密码认证失败错误
问题根因
你的pgsql2数据库连接配置读取了错误的环境变量,导致始终调用第一个数据库的账号密码(postgres/password)去连接第二个数据库,因此触发认证失败报错。
修复步骤
- 修改
config/database.php里的pgsql2连接配置,将用户名和密码的环境变量读取参数改为对应带_2后缀的变量:
'pgsql2' => [ 'driver' => 'pgsql', 'host' => env('DB_HOST_2', 'host'), 'port' => env('DB_PORT_2', '5432'), 'database' => env('DB_DATABASE_2', 'infinite'), // 下方两行是需要修改的核心内容,替换为带_2后缀的环境变量 'username' => env('DB_USERNAME_2', 'user'), 'password' => env('DB_PASSWORD_2', 'password'), 'charset' => 'utf8', 'prefix' => '', 'schema' => 'public', 'sslmode' => 'prefer', ]
- 修改完成后执行配置缓存清空命令让变更生效:
php artisan config:clear
如果是生产环境可以重新生成缓存提升加载效率:php artisan config:cache
可选排查项
如果修改后仍有报错,可确认以下两点:
.env里DB_HOST_2对应的生产服务器IP/域名是否正确,生产服务器的5432端口是否开放了你的Laravel应用所在服务器的访问权限- 生产数据库的账号
user、密码password是否正确,账号是否有权限访问infinite数据库
内容的提问来源于stack exchange,提问作者PieceofShid
相关产品推荐
相关产品推荐

