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 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