mongodb4.x创建用户并授予权限

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()

在这里插入图片描述
有关用户及角色管理,参考:用户管理

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值