NestJs+Prisma执行npx prisma db push时MongoDB认证失败
NestJs+Prisma执行
npx prisma db push遭遇MongoDB认证错误 错误详情
Environment variables loaded from .env Prisma schema loaded from prisma/schema.prisma Datasource "db": MongoDB database "test" at "localhost:27017" Error: MongoDB error SCRAM failure: Authentication failed. 0: schema_core::commands::schema_push::Calculate `from` at schema-engine/core/src/commands/schema_push.rs:29 1: schema_core::state::SchemaPush at schema-engine/core/src/state.rs:432
当前Prisma配置
generator client { provider = "prisma-client-js" } datasource db { provider = "mongodb" url = env("DATABASE_URL") } model User { id String @id @default(uuid()) @map("_id") createdAt DateTime @default(now()) updatedAt DateTime @updatedAt emailId String @@index([emailID]) }
.env数据库连接字符串
// DB Name is test DATABASE_URL="mongodb://user:password@localhost:27017/test?authMechanism=SCRAM-SHA-1"
使用的Prisma版本
"@prisma/client": "^5.0.0", "prisma": "^5.0.0",
解决步骤
验证账号密码与权限
使用MongoDB Shell直接测试连接:mongosh "mongodb://user:password@localhost:27017/test?authMechanism=SCRAM-SHA-1"确认账号能正常登录,且拥有
test数据库的读写权限。检查连接字符串格式
- 若密码包含
@、:、/等特殊字符,需进行URL编码(比如@编码为%40) - 部分环境下.env文件中的连接字符串无需包裹双引号,可尝试去掉引号后重试:
DATABASE_URL=mongodb://user:password@localhost:27017/test?authMechanism=SCRAM-SHA-1
- 若密码包含
调整认证机制
尝试将连接字符串中的authMechanism改为SCRAM-SHA-256,Prisma 5.x对该认证机制的兼容性更好:DATABASE_URL="mongodb://user:password@localhost:27017/test?authMechanism=SCRAM-SHA-256"升级Prisma版本
Prisma 5.0.0存在部分MongoDB相关的已知问题,升级到最新稳定版可修复部分兼容性问题:npm install prisma@latest @prisma/client@latest
内容的提问来源于stack exchange,提问作者Avinash A
相关产品推荐
相关产品推荐

