二.MongoDB入门-Mongodb权限管理

导读:本篇文章讲解 二.MongoDB入门-Mongodb权限管理,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1.认识MongDB权限

MongoDB安装完成后,默认是没有权限验证的,默认是不需要输入用户名密码即可登录的,但是往往数据库方面我们会出于安全性的考虑而设置用户名密码。

在MongDB中内置了一些用户角色roles,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选:

角色 说明
Read 允许用户读取指定数据库
readWrite 允许用户读写指定数据库
dbAdmin 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin 允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin 只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase 只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root 只在admin数据库中可用。超级账号,超级权限。

mongodb是没有默认管理员账号,所以要先添加管理员账号,再开启权限认证。添加账号需要使用use admin切换到admin数据库,在admin数据库添加的账号才是管理员账号。

在MongDB中,用户只能在用户所在数据库登录,包括管理员账号。mongo的用户是以数据库为单位来建立的,每个数据库有自己的管理员。管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以。
注:帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证

2.创建账号

2.1.创建管理用户

查看数据库

> show dbs

切换admin数据库

> use admin

查看用户

> show users

创建用户 , 文档 https://docs.mongodb.com/manual/tutorial/configure-scram-client-authentication/

> db.createUser( { user: "adminuser", pwd: "123456", roles: [ { role: "userAdminAnyDatabase", db: "admin"}]}) #创建用户
> show users  #查看用户
  • user : 用户名
  • pwd : 密码
  • roles : 角色
  • db : 数据库

开启认证,修改配置文件 bin/mongod.cfg ,增加如下内容

security:
    authorization: enabled

修改之后,重启mongdb服务 ,重新连接mongdb

> D:\Program Files\MongoDB\Server\4.4\bin> mongo.exe

登录mongdb

> show admin
> db.auth("adminuser","123456")

2.2.创建普通账号

创建普通数据库, 先切到admin数据库,然后db.auth(“用户”,“密码”) 登录

> use admin #切到amdin数据库
> db.auth("adminuser","123456") #登录

通过 use 创建数据库 test,如果已经有该数据就会进行切换。如果数据库没有数据执行 show dbs 数据库不会被显示

> use test

在 test 数据库中 ,创建用户 ,可以通过 db 命令查看当前是哪个数据库

> db.createUser( { user: "testuser", pwd: "123456", roles:  [ { role : "userAdmin", db : "test"  },{ role: "dbAdmin", db: "test"},{ role : "readWrite", db : "test"  }]})
> show users

登录test数据库

> use test  #切到test数据库
> db.auth("testuser","123456") #登录

3.修改用户

3.1.修改用户权限

先进入数据库,然后使用db.updateuser修改 , 比如下面就给testuser用户新增了角色

> use admin
> db.updateUser( "testuser",{ roles : [ { role : "dbAdmin", db : "test"  },{ role : "readWrite", db : "admin"  } ]} )

最终的权限以修改的权限为主。

3.2.修改用户密码

下面案例是更新密码

> use admin
> db.updateUser("adminuser",{"pwd":"adminuser"})

或者使用下面命令

> db.changeUserPassword("adminuser","adminuser")

4.删除用户

删除用户需要切换到对应的数据库,然后使用db.dropUser进行删除,需要具备:userAdmin ,userAdminAnyDatabase或者root权限才可以删除用户。

> use admin
> db.auth("adminuser","adminuser")
> use test
> db.dropUser("testuser");

文章结束希望对你有所帮助,建议收藏,喜欢的话请给个好评

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/10598.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!