概述
MongoDB默认设置为无权限访问限制,与MySQL不同,MongoDB在安装的时候并没有设置权限,系统在公网上运行需要设置权限以保证数据安全,所以我们要学习MongoDB的权限管理,MongoDB开启认证模式很简单, 使用mongod启动的时候带上--auth
参数就好了
MongoDB的权限管理方案
MongoDB是没有默认管理员账号,所以要先添加管理员账号,并且mongodb服务器需要在运行的时候开启验证模式
- 户只能在用户所在数据库登录(创建用户的数据库),包括管理员账号。
- 管理员可以管理所有数据库,但是不能直接管理其他数据库,要先认证后才可以。
正文
确认MongoDB安装部署好以后,sudo mongo
进入mongo shell进行如下操作
1.查看内置数据库
MongoDB内置有两个数据库,一个名为admin,一个名为local。
$ show dbs
2. 查看用户表
MongoDB包含了一个system.user表,这个表就等同于MsSql中的用户表,用来存放超级管理员的(超级管理员账号必须创建在该数据库上)。
$ use admin
3. 创建超级管理员
添加一个超级管理员用户,username为test,password也为test
db.createUser({"user":"test","pwd":"test","roles":["root"]})
注意: 即然我们添加了超级管理员,那我们来测试下,看看再次连接MongoDB需不需要提示输入用户名、密码,我们先退出来(ctrl+c),输入$ use admin
,输入$ show collections
并没有出现输入用户名和密码,是因为MongoDB默认设置为无权限访问限制,我们在在注册表中,找到MongoDB的节点,在它的ImgPath中,我们修改一下,加入 -auth,如下所示: "D:\Program Files\mongodb\bin\mongod" -dbpath e:\work\data\mongodb\db -logpath e:\work\data\mongodb\log -auth -service
,再输入$use admin
,$show collections
,发现需要输入密码。
4.退出mongo shell
按住ctrl+C退出mongo shell
5.以权限认证的方式启动MongoDB数据库
6. 创建普通用户
mongod # 首先使用普通模式启动mongodb mongo # 进入mongodb use admin # 进入账号管理 db.createUser({user:"root",pwd:"test",roles:["root"]}) # 创建全局账