MongoDB默认不开启授权认证,只要客户端程序能够访问MongoDB服务器,就可以与它进行连接。
但是在生产环境,一般都是需要开启授权认证的,只有经过授权的用户才能够连接到MongoDB,才允许访问相关的资源,即:用户-角色-资源~ 这种模式与其它关系型数据库的权限模式基本一致,这里不做过多的解释。
要开启认证模式,首先修改MongoDB的配置文件: /etc/mongod.conf (路径可能与我不同~)
修改配置:
开启完成后重启MongoDB即可生效:
需要特别注意一点,就是在开启授权认证模式之前,需要先在MongoDB中创建一个管理员用户,MongoDB是不提供默认用户的。
下面介绍如何创建管理员用户:
1、首先切换到admin数据库,这个库的作用是用来存放MongoDB中所有的授权用户,默认这个库是不存在的,我们先切换过来,在用的时候它会自动创建。
2、创建用户,把下面代码负载进去执行。
MongoDB中内置了很多角色,我们可以直接使用。
角色可以设置多个:
role:表示角色,db:表示当前角色针对哪个数据库有效。比如设置了admin 那么这个用户的权限范围只在admin数据库有效。
比如我设置 role:"readWrite", db:"mydb" 那么这个用户只能在mydb这个数据库有读写的权限。
但是MongoDB中提供了几个全局数据库的角色,例如上面的
注意后面的AndDataBase, 如果设置了这个角色,那么意味着这个角色是针对所有数据库有效的,尽管它设置了db:"admin"。
设置完毕系统管理员用户后,我们就可以开启MongoDB中的授权认证模式了,开启模式后在此进入MongoDB的客户端:
第一步切换到admin数据库:
switched to db admin
第二步进行身份认证:
认证成功返回1,如果认证失败会提升相关的错误信息。
我们可以查看一下系统用户:
然后我们可以给具体的数据里设置授权用户了。
我们给mydb数据库设置读写的权限用户。
上面的URL配置了用户名和密码 以及要连接的数据库。