关于mongodb授权与登录问题的误解

1.创建的普通用户,普通用户都跟着库走
所以,在创建用户时,在哪个库使用,就use这个库再创建用户并授权.use user,db.createUser({user:’test4′,pwd:’111111′,roles:[{“role”:”readWrite”,”db”:”user”}]});
登录时:mongo localhost/user -u test4 -p 111111 ; #连接时应该指明连接哪个数据库!

2.如果需要管理其他库,需要先通过admin认证后才能管理其他数据库.

使用php登录时,所以推荐登录方式改成:先./mongo ,use数据库,再db.auth();

3.如果绑定了IP登录,会限制其他IP地址登录

mongodb,auth()为1,但使用客户端连接失败

需要指定认证数据库,虽然默认为admin!
./mongo -uroot -p123456 [–authenticationDatabase] admin;

解决办法(尚未验证):http://stackoverflow.com/questions/29006887/mongodb-cr-authentication-failed
http://blog.163.com/dazuiba_008/blog/static/36334981201562921956529/

jira:https://jira.mongodb.org/browse/SERVER-17459

登录方式改成:先./mongo 再使用db.auth(“username”,”pwd”);登录?

mongodb权限管理

0.开启权限认证:在配置文件中写入:auth=true

1.mongo3.0以上,已经删除addUser方法来添加用户.使用createUser();

如:db.createUser({user:”root”,pwd:”123456″,roles:[]});
db.createUser({user:”test3″,pwd:”123456″,roles:[{role:”readWrite”,db:”gd_test”}]});

2.角色类型:read.readWrite,dbAdmin,dbOwner,userAdmin,root

3.添加授权:db.grantRolesToUser(“admin”, [{ role: “readWriteAnyDatabase”, db: “admin” }])

4.取消授权:

  1. db.revokeRolesFromUser(“<username>”, [{ role: “<role-name>”, db: “<db-name>”}])

5.切换用户:use admin;db.auth(‘test’,’123456′);

6.登录时指定认证库?:./mongo -uroot -p123456 –authenticationDatabase admin (指定验证用户数据为admin,不指定不能登录成功?http://stackoverflow.com/questions/18216712/cannot-authenticate-into-mongo-auth-fails)
或者简写成./mongo -uroot -p123456 admin
原因是,用户跟随数据库走,默认在admin数据库下建立的用户,虽然授权了其他库,但还是有限制.

所以登录方式改成:先./mongo ,use 数据库,再db.auth();