为了账号安全,请及时绑定邮箱和手机立即绑定

golang 连接到远程 mongodb 服务器失败,出现身份验证错误

golang 连接到远程 mongodb 服务器失败,出现身份验证错误

Go
智慧大石 2021-11-15 17:13:03
我正在尝试连接到 golang 中的远程 mongodb 服务器并在数据库中添加数据。它给了我如下错误:服务器在 SASL 身份验证步骤返回错误:身份验证失败。代码:package mainimport (    "fmt"    "gopkg.in/mgo.v2"    "gopkg.in/mgo.v2/bson"    "log"    // "os")type Person struct {    Name  string    Phone string}func main() {    session, err := mgo.Dial("mongodb://<dbuser>:<dbpassword>@ds041154.mongolab.com:41154/location")    if err != nil {        fmt.Println(err)    } else {        fmt.Println("Session created")    }    // Optional. Switch the session to a monotonic behavior.    session.SetMode(mgo.Monotonic, true)    c := session.DB("location").C("people")    err = c.Insert(&Person{"Ale", "+55 53 8116 9639"},        &Person{"Cla", "+55 53 8402 8510"})    if err != nil {        log.Fatal(err)    }    result := Person{}    err = c.Find(bson.M{"name": "Ale"}).One(&result)    if err != nil {        log.Fatal(err)    }    fmt.Println("Phone:", result.Phone)}对此的任何帮助表示赞赏。
查看完整描述

2 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

我遇到了类似的错误,但我发现我输入了错误的登录凭据。


这段代码对我有用:


package main


import (

    "fmt"

    "time"


    "gopkg.in/mgo.v2"

)


//const MongoDb details

const (

    hosts      = "ds026491.mongolab.com:26491"

    database   = "messagingdb"

    username   = "admin"

    password   = "youPassword"

    collection = "messages"

)


func main() {


    info := &mgo.DialInfo{

        Addrs:    []string{hosts},

        Timeout:  60 * time.Second,

        Database: database,

        Username: username,

        Password: password,

    }


    session, err1 := mgo.DialWithInfo(info)

    if err1 != nil {

        panic(err1)

    }


    col := session.DB(database).C(collection)


    count, err2 := col.Count()

    if err2 != nil {

        panic(err2)

    }

    fmt.Println(fmt.Sprintf("Messages count: %d", count))

}


查看完整回答
反对 回复 2021-11-15
?
慕标5832272

TA贡献1966条经验 获得超4个赞

您需要在需要进行身份验证的数据库上调用.Login(user, pass string)

if err:= session.DB(authDB).Login(user, pass); err != nil {
  panic(err)
  }

请注意,这会验证session,因此您从中 .Copy().Clone() 的每个其他会话也经过验证。


查看完整回答
反对 回复 2021-11-15
  • 2 回答
  • 0 关注
  • 335 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信