为mongodb设置最高权限的用户名密码
> use admin
> db.createUser({user: 'root', pwd: '123456', roles: ['root']})
> use test
> db.createUser({user:'test',pwd:'123456',roles:['dbAdmin',db:'test']}) #为test库创建一个test的管理用户
#重启mongod 进程
$ killall mongod
$ /usr/local/opt/mongodb/bin/mongod --config /usr/local/etc/mongod.conf --auth & #--auth 这个参数要加上
通过用户名验证登录
$ mongo #连上mongodb
> use admin #切换到admin 库 注意:因为我创建的root是在admin库下操作的,所以验证用户之前要先切换到admin库
> db.auth("root","123456") #验证用户名密码
查看所有用户(注意权限)
> use admin
> db.system.users.find().pretty()
修改用户
> use test
> db.changeUserPassword('test','newpass') #修改密码
> db.grantRolesToUser( "test", [ { role: "read",db:"test"} ] ) #修改test用户只能读test库
> db.revokeRolesFromUser("test",[ { role: "read",db:"test"} ] ) #撤销权限
> db.dropUser("test") #删除test用户
角色
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
show dbs // 显示当前所有的库
db //显示当前库
show collections //显示当前库的所有集合
删除数据库
#注意要先切换到要删除的库再执行db.dropDatabase()
> use test1
> db.dropDatabase()
集合
> db.createCollection("order")
> db.createCollection("mycol", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } ) #创建固定集合 mycol,整个集合空间大小 6142800 KB, 文档最大个数为 10000 个。
> db.order.drop() #删除order集合
> db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true}) #更新数据 如果不带multi:true 则只会更新一条记录
> db.col.remove({'title':'MongoDB 教程'}) #删除符合条件的记录
> db.col.remove({}) #清空集合
网友评论