MongoDB基础之七 用户管理
MongoDB的用户管理
注意:
A)在mongodb中,有一个admin数据库, 牵涉到服务器配置层面的操作,需要先切换到admin数据.
即 use admin , -->相当于进入超级用户管理模式.
B)mongo的用户是以数据库为单位来建立的, 每个数据库有自己的管理员.
C) 我们在设置用户时,需要先在admin数据库下建立管理员---这个管理员登陆后,相当于超级管理员.
添加用户
命令:db.addUser();
简单参数: db.addUser(用户名,密码,是否只读)
例:
1 > use admin 2 > db.addUser('user','passwd',false) ; -- false 表示可读写 3 4 > use admin 5 switched to db admin 6 > 7 > 8 > show tables -- 默认 9 > 10 > 11 > db.addUser('sa','admin',false); 12 { 13 "user" : "sa", 14 "readOnly" : false, 15 "pwd" : "b61d1ef5ad1acf7012b6010b95eb701e", 16 "_id" : ObjectId("5743f55eaddef29711337fbf") 17 }
注意: 添加用户后,我们再次退出并登陆,发现依然可以直接读数据库?
原因: mongodb服务器启动时, 默认不是需要认证的.
要让用户生效, 需要启动服务器时,就指定 --auth 选项.
这样, 操作时,就需要认证了.
--带密码验证方式启动 mongodb
1 [root@localhost mongodb]# ./bin/mongod --dbpath /home/mdata/ --logpath /home/mlog/mlog.log --fork --auth 2 about to fork child process, waiting until server is ready for connections. 3 forked process: 16078 4 all output going to: /home/mlog/mlog.log 5 log file [/home/mlog/mlog.log] exists; copied to temporary file [/home/mlog/mlog.log.2016-05-24T06-34-57] 6 7 8 child process started successfully, parent exiting 9 10 [root@localhost mongodb]# ./bin/mongo 11 MongoDB shell version: 2.4.9 12 connecting to: test 13 > 14 > 15 > show dbs; 16 Tue May 24 14:35:20.442 listDatabases failed:{ "ok" : 0, 17 "errmsg" : "unauthorized" } at src/mongo/shell/mongo.js:46 18 19 --一定要先切换到admin库 20 > use admin 21 switched to db admin 22 > 23 > 24 > db.auth('sa','admin'); 25 1 26 > show dbs 27 admin 0.203125GB 28 local 0.078125GB 29 test 0.203125GB 30 >
修改用户密码
1 > use test 2 > db.changeUserPassword('testUser','1234'); 3 >
删除用户
> use test > db.removeUser('testUser');
注: 如果需要给用户添加更多的权限,可以用json结构来传递用户参数
例:
> use test >db.addUser({user:'user',pwd:'passwd',roles:['readWrite,dbAdmin']});