开启安全检查之前,一定要至少有个管理员帐号
use admin
db.addUser("root","abcd");

use test
db.addUser("test_user","efgh");
db.addUser("read_only","ijkl",true);//加入 true 只读权限

重启服务,加入--atuh命令行选项,开启安全检查
use test
db.test.find(); //提示error:

db.auth("read_only","ijkl"); //返回1
db.test.find(); //返回数据
db.test.insert({"x":2}); // unauthhorized

db.auth("test_user","efgh");//返回1
db.test.insert({"x":2}); //正常
db.test.find(); //正常,返回数据

show dbs; //返回 assert:assert failed...
use admin
db.auth("root","abcd")//返回1
show dbs //返回数据库列表

数据库的用户帐号是以文档的形式存储在system.users 集合里面。
文档的结构是 {"user":username,"read_only":true,"pwd": password hash}
可以删除
db.auth("test_user","efgh");//返回1
db.system.users.remove({"user":"test_user"})
db.auth("test_user","efgh"); //返回0