mongodb的用户管理

简介:由于mongodb数据的用户管理是基于单个库的管理,他的管理策略大概如下

    如果验证了admin库的账户,那么所有的库都可以访问

    如果验证了非admin库的账户,那么此权限只能访问当前库下的数据

步骤建议:

    如果要对数据库进行账户设置,最好我们首先不要开启数据库验证,然后进入admin库,创建密码

退出添加 -auth  验证重启mongodb然后使用admin库的账户进行验证,如果通过那么进入其它库进行账户创建,完成后重新登录进行验证

验证如下:

    启动mongod

        mongod.exe --dbpath=E:\mongodb\db -auth  -auth  开启用户验证,如果启动没有添加此参数那么用户验证将失败

    首先进入admin库

        use admin

    查看当前数据的用户

        show collections 能返回两个表

    添加admin库的sa账户密码为sa

        db.addUser(‘sa‘,‘sa‘)

    ctrl+c 退出当前登录

    重新登录并进入admin库和test库检查是否能够查询当前表

> use admin
switched to db admin
> show collections
Mon Oct 13 17:11:01 uncaught exception: error: {
        "$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",
        "code" : 10057
}
> use test
switched to db admin
> show collections
Mon Oct 13 17:13:51 uncaught exception: error: {
        "$err" : "unauthorized db:test lock type:-1 client:127.0.0.1",
        "code" : 10057
}

    验证admin库里面的sa账户是否能够查看admin库和test库的信息

    

> db.auth(‘sa‘,‘sa‘)
1
> show collections
system.indexes
system.users
> use test
switched to db test
> show collections
system.indexes
system.users
>

    进入test库并创建用户test密码test

> use test
switched to db test
> db.addUser(‘test‘,‘test‘)
{
        "updatedExisting" : true,
        "n" : 1,
        "connectionId" : 10,
        "err" : null,
        "ok" : 1
}
{
        "_id" : ObjectId("543b80be1d60b11044c2fc59"),
        "user" : "test",
        "readOnly" : false,
        "pwd" : "a6de521abefc2fed4f5876855a3484f5"
}
>

    ctrl+c退出重新登录,验证test账户能够访问test库和admin库

> db.auth(‘test‘,‘test‘)
1
> show collections
system.indexes
system.users
> use admin
switched to db admin
> show collections
Mon Oct 13 17:21:06 uncaught exception: error: {
        "$err" : "unauthorized db:admin lock type:-1 client:127.0.0.1",
        "code" : 10057
}
>

    验证admin库的admin帐号,看是否能查看admin库的信息

> use admin
switched to db admin
> db.auth(‘sa‘,‘sa‘)
1
> show collections
system.indexes
system.users
>

PS:当验证用户的时候,如果返回1证明有此用户,如果返回0证明没有此用户 如:

> use admin
switched to db admin
> db.auth(‘sa‘,‘sa‘)
1


本文出自 “精忠报国” 博客,请务必保留此出处http://xinsir.blog.51cto.com/5038915/1563383

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。