golang的mgo庫帶賬號密碼連接mongodb

golang的mgo庫帶賬號密碼連接mongodb

1.找了一圈,發現很少mgo帶賬號密碼登錄連接mongodb的文章,逐記錄一下。

2.解決golang連接Mongodb是的server returned error on SASL authentication step: Authentication failed 錯誤

上代碼

// mongodbAuth project main.go
package main

import (
	"fmt"
	"os"

	"gopkg.in/mgo.v2"
)

func main() {
	fmt.Println("Hello World!")
	session := InitMongoSession()
	myDB := session.DB("config")
	collects, err := myDB.CollectionNames()
	if err != nil {
		fmt.Println("CollectionNames-error:", err)
		os.Exit(0)
	}
	fmt.Println(collects)
}

func InitMongoSession() *mgo.Session {
	mHost := "127.0.0.1"
	mPort := "27017"
	//mDBName := "config"  //你要連接的表,也可以後面再選,都行
	mUsername := "admin" //mongodb的賬號
	mPassword := "12345" //mongodb的密碼
	session, err := mgo.Dial(mHost + ":" + mPort)
	if err != nil {
		fmt.Println("mgo.Dial-error:", err)
		os.Exit(0)
	}
	session.SetMode(mgo.Eventual, true)
	myDB := session.DB("admin") //這裏的關鍵是連接mongodb後,選擇admin數據庫,然後登錄,確保賬號密碼無誤之後,該連接就一直能用了
	//出現server returned error on SASL authentication step: Authentication failed. 這個錯也是因爲沒有在admin數據庫下登錄
	err = myDB.Login(mUsername, mPassword)
	if err != nil {
		fmt.Println("Login-error:", err)
		os.Exit(0)
	}
	//myDB = session.DB(mDBName) //如果要在這裏就選擇數據庫,這個myDB可以定義爲全局變量
	session.SetPoolLimit(10)
	return session
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章