mongodb版本为3.2.10(目前最新),演示的是linux下的mongodb受权认证linux
service mongod start
默认的启动mongod是不开启受权登陆的。个人MongoDB是使用的yum安装的。详见《在CentOS 6.x 64bit上安装MongoDB 3.2社区版》。因此,mongod是安装在:/usr/bin/mongod,配置文件的路径:/etc/mongod.conf。mongodb
show dbs;
看到只有一个local数据库,admin是不存在的(这是3.0以上版本改变了的),咱们须要本身给他建立个admin数据库。shell
use admin db.createUser({ user: "mongoadmin" , pwd: "mongoadmin", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]});
vi /etc/mongo.conf
在配置文件中增长数据库
security: authorization: "enabled"
当你运行 show dbs;的时候会出现下面的提示:spa
~ mongo MongoDB shell version: 3.2.10 connecting to: 127.0.0.1/test > show dbs; 2016-11-15T09:26:16.883+0800 E QUERY [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }", "code" : 13 } : _getErrorWithCode@src/mongo/shell/utils.js:25:13 Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1 shellHelper.show@src/mongo/shell/utils.js:761:19 shellHelper@src/mongo/shell/utils.js:651:15 @(shellhelp2):1:1
这说明已经启用受权管理了。.net
运行prototype
db.auth('mongoadmin','mongoadmin');
就能够执行相关的操做命令了。code
使用mongoadmin受权操做视乎权限有点儿大。我们能够为每一个db受权一个用户来进行操做。blog
use myTest db.createUser( { user: "test", pwd: "123456", roles: [ { role: "readWrite", db: "myTest" } ] } )
这样就能够为myTest添加了test的受权用户,test用户能够对myTest进行读写操做,因为它不是一个操做用户。因此,不能对admin数据库进行操做。get