mongodb主从用户权限管理

1、创建mongo的管理用户
 #mongo 
 >use admin
>db.createUser({user:"mongodbuser",pwd:"mongo123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})   //此用户只对用户管理有权限。对其他数据库无操作权限

2、关闭mongo,在mongo启动脚本后加上参数--auth
重启mongo

3、
#mongo
>show dbs
rs1:PRIMARY> show dbs         //未认证无法查看数据库
2016-05-16T17:24:48.174+0800 E QUERY    Error: listDatabases failed:{
        "ok" : 0,
        "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
        "code" : 13
}
    at Error ()
    at Mongo.getDBs (src/mongo/shell/mongo.js:47:15)
    at shellHelper.show (src/mongo/shell/utils.js:630:33)
    at shellHelper (src/mongo/shell/utils.js:524:36)
    at (shellhelp2):1:1 at src/mongo/shell/mongo.js:47

>use admin
>db.auth('mongodbuser','mongo123456')

>show dbs
admin    0.078GB
local   20.068GB
test     0.078GB
wechat   0.078GB

现在可以给相应的数据库添加相应的用户了
>use wechat
>db.createUser({user:"testr",pwd:"123456",roles:[{role:"read",db:"wechat"}]})         //给与用户testr,在数据库wechat中只读得权限
>db.createUser({user:"testrw",pwd:"123456",roles:[{role:"readWrite",db:"wechat"}]}) //给与用户testrw,在数据库wechat中只读写得权限


要对每个数据库都有读写权限可以创建一下用户,role为root的超级用户
>db.createUser({user:"zwli",pwd:"$$lw123456",roles:[{role:"root",db:"admin"}]})

 
 
 //test 脚本
db.abc.insert({"a":"1","b":"2"}) 
db.artich.insert({"name":"1"}) 
db.artich.find()


如忘记密码可去掉启动命令后的--auth参数,重新启动。这样就不用用户验证了


删除用户:db.dropUsers("username")

获取数据库所有用户权限:db.getUsers()或show users

获得某个用户的权限信息: db.getUser("username")

创建角色: db.createRole()

更新角色: db.updateRole()

删除角色: db.dropRole()

获得某个角色信息: db.getRole()

删除所有用户: db.dropAllUsers()

将一个角色赋予给用户: db.grantRolesToUser()

撤销某个用户的某个角色权限: db.revokeRolesFromUser()

更改密码: db.changeUserPassword()

















给mongo主从配置权限管理
主从配置好后
进入主节点
use admin

db.createUser({user:"mongomanagement",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

db.createUser({user:"mongomonitor",pwd:"123456",roles:[{role:"clusterMonitor",db:"admin"}]})

db.grantRolesToUser("mongomanagement",[{role:"readWriteAnyDatabase",db:'admin'}])

db.grantRolesToUser("mongomanagement",[{role:"root",db:'admin'}])

关闭mongo主从服务,生成mongo验证文件
openssl rand -base64 741 > mongodb-keyfile 
权限设置成600
chmod 600   mongodb-keyfile

然后启动命令加上--auth --KeyFile mongodb-keyfile
命令为
/home/apps/mongodb/bin/mongod --config /home/apps/mongodb/master.conf --httpinterface --rest --auth --keyFile /home/apps/mongodb/mongodb-keyfile

你可能感兴趣的:(数据库)