1、以无访问控制模式启动mongodb
管理员权限打开cmd窗口
官方语句:
mongod --port 27017 --dbpath / var / lib / mongodb
如果你把bin目录配置到了环境变量中,那么不用上面的,直接执行下面的就行:
net start mongodb
ps:mongodb3.x版本之后,在安装过程中就已经自动把服务加到window系统中了,所以不需要乱七八糟配置去配置服务,可以参考这个看一下mongodb4.0的安装方式
2、连接到实例
mongo --port 27017
3、创建超级用户,这个用户可以管理所有用户的增删改以及权限控制
admin这个库是mongodb自动带的,专门管理用户和权限的,现在需要创建一个超级管理员权限(拥有userAdminAnyDatabase和readWriteAnyDatabase两个权限)的用户。用户名和密码随便写,但是角色必须是这两个:
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "123456",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
创建成功后会打印出来结果:
4、然后关掉mongodb服务
官方的方法是在当前实例下,执行:
db.adminCommand( { shutdown: 1 } )
我执行完报错,但是确实是关闭了
或者:
net stop mongodb
再或者去任务管理器关掉就行了
5、以授权方式启动mongodb服务,并验证权限
设置配置文件mongod.cfg(在mongo安装目录的bin目录下),以官方方式打开授权认证:
管理员权限运行cmd,并输入以下命令启动mongodb:
net start mongodb
验证权限有两种方式
- 连接实例的时候就验证
mongo --port 27017 -u "myUserAdmin" --authenticationDatabase "admin" -p
之后会让你输入密码:输入123456
- 连接实例之后,使用数据库的时候验证
先连接实例:
mongo --port 27017
然后验证:(用户名密码是上面自己设置的,要记下来)
use admin
db.auth("myUserAdmin", "123456" )
返回一个:1,就代表成功了
6、给其他数据库创建用户权限
一旦通过用户管理员身份验证,就可以使用 db.createUser()创建其他用户。可以将任何内置角色或用户定义的角色分配给用户,角色可以看官网介绍
我这里创建了一个mytest数据库:
user mytest
这条语句就是,数据库存在则转到该数据库,不存在则创建之后转到该数据库
然后插入一条数据:
插入语句:db.collection.insertOne()
collection表示集合,如果集合不存在则自动创建之后插入数据,比如下面的这个语句,将自动创建inventory,并插入一个对象
db.inventory.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)
跑偏了,这里是说创建用户来着…
use mytest
db.createUser(
{
user: "myTester",
pwd: "123456",
roles: [ { role: "readWrite", db: "mytest" },
{ role: "read", db: "hanchuang" } ]
}
)
创建成功之后,断开实例连接:
exit
然后重新以验证方式登录实例,这里使用第一种方式(连接时验证):
mongo --port 27017 -u "myTester" --authenticationDatabase "mytest" -p
输入密码:123456,搞定!
现在你有权在mytest中执行读写操作了:
db.users.insertOne({name:"hanchuang",phone:"133xxxxxxx"})
查询一下插入结果:
db.users.find().pretty()
有关用户及角色管理,参考:用户管理