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

Go Fiber连接MongoDB出现SCRAM-SHA-1认证失败问题求助

解决MongoDB认证失败问题

核心原因

通过MONGO_INITDB_ROOT_USERNAME创建的root账号默认归属admin数据库,而代码中连接URI直接指定scrapping数据库作为认证源,导致MongoDB尝试用scrapping库验证root账号,最终认证失败。

解决方案

方案一:修改连接URI指定认证数据库

在连接字符串末尾添加authSource=admin参数,明确指定使用admin库完成认证:

const mongoURI = "mongodb://root:secret@localhost:27017/scrapping?authSource=admin"

方案二:创建目标数据库专用用户(推荐,遵循最小权限原则)

  1. 进入MongoDB容器,使用root账号登录:
docker exec -it mongo mongosh -u root -p secret
  1. 切换到scrapping数据库:
use scrapping
  1. 创建拥有该库读写权限的专用用户:
db.createUser({
  user: "scrapping_user",
  pwd: "your_secure_password",
  roles: [{ role: "readWrite", db: "scrapping" }]
})
  1. 修改代码中的连接URI为专用用户信息:
const mongoURI = "mongodb://scrapping_user:your_secure_password@localhost:27017/scrapping"

额外代码修正

原代码连接逻辑存在顺序错误,client.Connect后未先判断错误就调用client.Database,若连接失败会触发panic,需调整顺序:

err = client.Connect(ctx)
// 先判断连接是否成功
if err != nil {
    return err
}
// 再获取数据库实例
db := client.Database(dbName)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:12:44