初次接触MongoDB用户设置及认证,与以前不一样,有点搞不清楚状况,现在有点思绪了。
先说明几点:
1、MongoDB安装后默认不启动认证,不需要用户名和密码就可以随意访问。
2、MongoDB用户权限分配的操作,是针对某个数据库来说的。
3、每个数据库都有一个system.users集合,记录权限相关的信息,也就是谁有权限访问此数据库。
4、MongoDB安装后默认有一个admin数据库,此时admin中的system.users集合中没有一个用户,
这样不管mongodb启动时有没有启用认证(添加--auth),都可以无需认证进行随意操作,直到admin
的system.users集合中添加了一个用户并且启动了认证,操作才会受限。
5、admin的system.users集合中的用户具有超级权限,也就是说在admin中创建的用户可以对其他库操作.
6、必须在启动认证前,在admin的system.users集合先添加一个超级用户,否则就无法操作库了。
7、super admin必须从admin那么登录,然后再use其它库才可以,否则直接在其它库auth没用。
8、如果想单独访问一个库,用独立的用户名,就需要在该库的system.users集合中创建相应的user,然
后进行认证才可以。(先登入admin,在use该库,然后创建user,接着auth一下,这需要有super权限。)
9、启动认证后,只有super admin 才有权限进行show dbs;
启动认证
1、在Cmd中输入regedit,然后搜索mongodb
2、找到ImgPath,修改其值,添加 -auth,如下
D:\mongo\bin\mongod.exe --logpath D:\mongo\log\mongodb.log --logappend --dbpath D:\mongo\db
--directoryperdb -auth --service
操作用户
添加用户
db.addUser('root','root') 默认有读写权限
修改用户
db.addUser('root','root2')
删除用户
db.system.users.remove({user:'root'})
查询用户
db.system.users.find()
用户认证
db.auth('root','root')
用户登入
mongo admin(库) -u root -p root