• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
孙龙 程序员
少时总觉为人易,华年方知立业难
博客园    首页    新随笔    联系   管理    订阅  订阅
golang的mgo库带账号密码连接mongodb
// 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
}

 

本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/13386568.html

posted on 2020-07-27 17:28  孙龙-程序员  阅读(1560)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3