mgo 连接需要授权登录的mongodb

原创 2016年09月29日 17:35:28

mgo 连接需要授权登录的mongodb

使用golang mgo连接到需要授权登录的mongodb

  • 测试环境
  • mongodb设置
  • golang mgo环境
  • 用例代码

搭建测试环境

windows 7, virtualbox, ubuntu 16.04LTS
  1. 安装[virtualbox]
  2. 安装虚拟机[ubuntu]
  3. 安装golang

    sudo apt-get update
    sudo apt-get install golang
    
  4. 安装mongodb

    sudo apt-get install mongodb
    mogod --version
    

    db version v2.6.10
    2016-09-29T16:54:46.199+0800 git version: nogitversion
    2016-09-29T16:54:46.200+0800 OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016

mongodb设置

上面步骤安装mongdb结束之后会自动启动

ps -aef | grep mongod

mongodb 626 1 0 01:05 ? 00:05:01 /usr/bin/mongod –config /etc/mongodb.conf

可以看到mongod使用 /etc/mongdb.conf启动

sudo vi /etc/mongodb.conf

1 # mongodb.conf
2
3 # Where to store the data.
4 dbpath=/var/lib/mongodb
5
6 #where to log
7 logpath=/var/log/mongodb/mongodb.log
8
9 logappend=true
10
11 bind_ip = 192.168.6.1
12 port = 27017
13
14 # Enable journaling, http://www.mongodb.org/display/DOCS/Journaling
15 #journal=true
16
17 # Enables periodic logging of CPU utilization and I/O wait
18 #cpu = true
19
20 # Turn on/off security. Off is currently the default
21 #noauth = true
22 auth = true

上面是我修改后的,改动了bind_ip, auth
但是改动之前,需要首先建立一个管理员账号,否则auth实际上是不起作用的

使用mongo连接本机数据库,添加管理员账号

mongo
use admin
db.addUser({user:"username",
            pwd: "yourpassword",
            roles: [ "userAdminAnyDatabase",
                     "dbAdminAnyDatabase",
                     "readWriteAnyDatabase"
                   ]
           })
quit()
sudo service mongodb stop

这样在添加了管理员账号之后,将默认方式启动的mongodb服务停止

ps -aef | grep mongodb

修改 /etc/mongodb.conf
如果bind_ip 127.0.01 只能本虚拟机访问
可以更改默认数据库文件目录,但是需要保证mongodb有权限rw
最重要的需要把auth=true

service mongodb start
mongo -u "useryouadd" --authenticationDatabase admin -p

输入刚刚设置的密码,看看是否可以连接上

golang mgo环境

sudo apt-get install golang
cd
mkdir GoTest
export GOPATH=`pwd`
go get gopkg.in/mgo.v2
echo "export GOPATH=`pwd`"

上面命令执行结束,golang,mgo都已经安装好了

用例代码

cd $GOPATH
mkdir mtest
cd mtest

mgo 提供了几个建立session的接口,我使用了DialWithInfo

package main

import (
    "fmt"
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
    "time"
)

func main() {
    dialInfo := &mgo.DialInfo{
        Addrs:     []string{"192.168.6.122"},
        Direct:    false,
        Timeout:   time.Second * 1,
        Database:  "yourdatabase",
        Source:    "admin",
        Username:  "username",
        Password:  "password",
        PoolLimit: 4096, // Session.SetPoolLimit
    }
    session, err := mgo.DialWithInfo(dialInfo)
    if nil != err {
        panic(err)
    }
    defer session.Close()
}

下一步就是CRUD

未完...
版权声明:本文为博主原创文章,未经博主允许不得转载。未授权转载按照千字千元收费。

相关文章推荐

mongodb授权登录,经过自己修改后的授权登录方式

mongodb版本为3.4(目前最新),演示的是linux下的mongodb授权认证(关于MongoDB的安装可以参考:http://blog.csdn.net/tototuzuoquan/artic...

MongoDB用户授权和管理

1、mongodb安装好后第一次进入是不需要密码的,也没有任何用户,通过shell命令可直接进入,cd到mongodb目录下的bin文件夹,执行命令./mongo即可 运行如下:[root@name...

为mongodb创建授权

刚安装好的mongodb是没有认证和授权的。 直接在客户端执行mongo命令就可以连接上数据库进行任何操作,这样很不安全。 通过以下方式添加认证: 1. 执行mongo命令: > use ...

MongoDB的授权和权限

1. 在开启MongoDB 服务时不添加任何参数时,可以对数据库任意操作,而且可以远程访问数据库。如果启动的时候指定—auth参数,可以对数据库进行用户验证。    ./mongod --auth ...

mgo使用指南

mgo简介 mgo(音mango)是MongoDB的Go语言驱动,它用基于Go语法的简单API实现了丰富的特性,并经过良好测试。 官方网站:http://labix.org/mgo。 golang.t...

golang mgo 使用

golang使用mongodb,目前比较多人用的是mgo((pronounced as mango)github地址 官网 文档直接上官方example的代码Example首先是要获得模块 go ...

MongoDb3配置远程连接-(带授权)即必须用户名密码来远程登录(win10)

啊啊

golang mgo的mongo连接池设置:必须手动加上maxPoolSize

golang的mgo库说明里是说明了开启连接复用的,但观察实验发现,这并没有根本实现连接的控制,连接复用仅在有空闲连接时生效,高并发时无可用连接会不断创建新连接,所以最终还是需要程序员自行去限制最大连...

golang 使用mgo 连接MongoDB

golang访问MongoDB数据库。

mgo使用指南-高级篇(长连接/重连)

Keeping an mgo (any other db engine) connection alive I have yet to write a service that would k...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mgo 连接需要授权登录的mongodb
举报原因:
原因补充:

(最多只允许输入30个字)