mongoDB-3.x启用认证

mongoDB-3.x启用认证

官方文档:

https://www.mongodb.org/downloads#production

https://docs.mongodb.org/manual/reference/method/js-user-management/

https://docs.mongodb.org/manual/reference/configuration-options/

https://docs.mongodb.org/manual/core/authentication/

 

环境:

CentOS6.5 x64

mongoDB-3.2.0

 

一.创建管理员用户

在启用认证前要先创建制授权用户

use admin

db.createUser(

{

user: "myUserAdmin",

pwd: "abc123",

roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

}

)

 

二.启用认证

命令行启动时加上 --auth 

配置文件

security:

  authorization: enabled

 

三.认证用户登录

mongo --host 192.168.192.10 --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"

mongo shell交互式登录

mongoDB-3.x启用认证
注意: 用户是建在mongo内嵌的admin库中,验证时也需指定认证库

说明: 通过mongo shell命令行认证和登录都没问题,但通过第三方gui工具(如robomongo,目前还没适配3.x)可能会报认证失败的错,具体解决方法请参看mongoDB跨平台图形管理工具之robomongo

2015-12-30T18:11:20.019+0800 I ACCESS   [conn7] Failed to authenticate myUserAdmin@admin with mechanism MONGODB-CR: AuthenticationFailed UserNotFound Could not find user myUserAdmin@admin

 

个人使用来看,mongoboost还是挺不错的

mongoDB-3.x启用认证
 

mongoDB-3.x启用认证

 

 

======================

(3)使用用刚才的超级帐号登录数据库(admin)mongo localhost:27017admin -u admin  -p admin

现在,我们就可以为其他数据库添加用户了:

比如filedb库

use filedb

db.addUser("xzsp"," xzsp")

授予这个用户的权限:(必须要,否则无法进行读写操作)

db.auth("xzsp "," xzsp")

(4)现在可以用新用户登录并且操作filedb数据库了

 

3.关闭本地例外登录方式

一旦拥有了超级管理员,就可以考虑关闭本地例外方式登录了

方法如下:

重启数据库,启动时候加上--setParameter enableLocalhostAuthBypass=0即可,这样登录的话就必须要用账户认证了

4.删除用户

删除用户要针对某个数据库进行删除

> use filedb

switched to db test

> db.removeUser("xzsp")

5.修改用户密码

普通用户只能修改自己的密码,userAdmin角色帐号可以修改其他用户密码

例如:

mongo 192.168.69.54:40000/admin -u admin -p admin

use filedb

db.changeUserPassword("xzsp","xzsp@123")

 

(3)用管理员账户登录,建立新账户,让他可以读写数据库test

[root@54 ~]# mongo localhost:30000/admin -u superman -p superman

mongos> use test

switched to db test

mongos> db.addUser("test","test")

{

        "user" : "test",

        "readOnly" : false,

        "pwd" : "a6de521abefc2fed4f5876855a3484f5",

        "_id" : ObjectId("51fb5d4ecaa5917203f37f63")

}

mongos> db.auth("test","test")

1

(4)用新帐号test登录,操作数据库test

[root@54 ~]# mongo localhost:30000/test -u test -p test            

MongoDB shell version: 2.4.4

connecting to: localhost:30000/test

> for( var i = 1; i < 100000; i++ ) db.test.insert( { x:i, C_ID:i } );

说明:为分片集群启用认证后,本地例外方式登录由于只具备admin数据库读写权限,无法进行分片操作。对本例来讲,添加分片,查看分片状态等操作都需要用superman帐号登录才行。执行数据库test操作用test帐号,这个帐号就是提供给客户端的帐号。

 

转载于:https://my.oschina.net/u/1038053/blog/788344

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值