MongoDB认证失败:错误码18终极解决指南

MongoDB 认证失败(错误码 18)分析与解决方案

MongoDB 认证失败(错误码 18)通常与身份验证配置或凭据问题相关。错误码 18 对应的完整描述为 AuthenticationFailed,表明客户端提供的凭据未能通过服务端的验证。以下是常见原因及解决方法。


原因一:用户名或密码错误

认证失败的最常见原因是用户名或密码输入错误。MongoDB 不会提示具体是用户名还是密码错误,需逐一排查。

验证方法:

// 使用正确的连接字符串格式
const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb://username:password@host:port/database?authSource=admin";

MongoClient.connect(uri, function(err, client) {
  if (err) {
    console.error("认证失败:", err);
    return;
  }
  console.log("连接成功");
  client.close();
});

注意事项:

  • 密码中包含特殊字符时需进行 URL 编码。
  • 检查用户名是否包含在目标数据库的 authSource 中(默认为 admin)。

原因二:认证机制不匹配

MongoDB 支持多种认证机制(如 SCRAM-SHA-1SCRAM-SHA-256),若客户端与服务端配置不一致会导致失败。

解决方法:

  1. 查询服务端支持的认证机制:
    mongod --auth --setParameter authenticationMechanisms=SCRAM-SHA-1,SCRAM-SHA-256
    
  2. 客户端显式指定机制:
    const uri = "mongodb://username:password@host:port/database?authMechanism=SCRAM-SHA-256";
    

原因三:数据库权限未正确配置

用户可能未在目标数据库中被授予角色,或角色权限

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值