亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 399 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號