前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库MongoDB-用户使用

数据库MongoDB-用户使用

作者头像
cwl_java
发布2021-01-29 10:46:12
7660
发布2021-01-29 10:46:12
举报
文章被收录于专栏:cwl_Javacwl_Java

MongoDB用户使用

创建DB管理用户

mongodb有一个用户管理机制,简单描述为,有一个管理用户组,这个组的用户是专门为管理普通用户而设的,暂且称之为管理员。

管理员通常没有数据库的读写权限,只有操作用户的权限, 因此我们只需要赋予管理员userAdminAnyDatabase角色即可。

另外管理员账户必须在admin数据库下创建。

小技巧:

  1. 由于用户被创建在哪个数据库下,就只能在哪个数据库登录,应该把所有的用户都创建在admin数据库下。先use admin数据库,进行登录,登录后use其他数据库进行操作,其中第二次的use就不需要在登录。MongoDB设定use第二个数据库时如果登录用户权限比较高就可以操作第二个数据库,而不需要登录。例如:root、userAdminAnyDatabase、dbAdminAnyDatabase 等。 1. 切换到Admin库

刚通过./mongo进入到客户端工具时,是没有使用数据库的。可以使用use切换数据库。

管理员需要在admin数据库下创建,所以我们需要切换到admin数据库。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PujEg44R-1611573489635)(https://uploader.shimo.im/f/8ybQWXgFjAH6Hu3t.png!thumbnail?fileGuid=TVXCXINSEMcmZvkf)]

查看admin中的用户

我们可以通过db.system.users.find()函数来查看admin库中的所有用户信息。

在这里插入图片描述
在这里插入图片描述

目前在admin库中没有用户,所以查无结果。

db.createUser函数

在MongoDB中可以使用db.createUser({用户信息})函数创建用户。

代码语言:javascript
复制
db.createUser({ 
    user: "<name>",
    pwd: "<cleartext password>",
    customData: { <any information> },
    roles: [
        { role: "<role>", db: "<database>" } | "<role>",
        ...
    ]
});

1)user:新建用户名。

2)pwd:新建用户密码。

3)customData:存放一些用户相关的自定义数据,该属性也可忽略。

4)roles:数组类型,配置用户的权限。

创建管理员用户

我们现在需要在admin库中创建一个名为bjsxt的管理员用户,密码为bjsxtpwd。

代码语言:javascript
复制
db.createUser({user:'bjsxt',pwd:'bjsxtpwd',roles:[{role:'userAdminAnyDatabase',db:'admin'}]})

也可以直接赋予root角色

代码语言:javascript
复制
db.createUser({user:'jinken',pwd:'jinken',roles:[{role:'root',db:'admin'}]})

创建成功后会看到如下提示:

5. 关闭MongoDB

在管理员账户创建完成后,我们需要重新启动MongoDB,并开启验证。

重新启动函数:db.shutdownServer()。必须在./mongodb客户端命令行中才能输入

在这里插入图片描述
在这里插入图片描述

使用权限方式启动MongoDB

在这里插入图片描述
在这里插入图片描述

在默认的情况下MongoDB是不开启用户认证的。如果我们添加用户,那么需要开启用户认证机制。通过修改mongodb.conf配置文件,在文件中添加auth=true即可。

在这里插入图片描述
在这里插入图片描述

修改完成后启动MongoDB。

用户认证

创建管理员后,需要认证方可使用该用户,否则会提示需要认证。

在这里插入图片描述
在这里插入图片描述

认证函数:db.auth(‘用户名’,’密码’)

在这里插入图片描述
在这里插入图片描述

如果结果返回1,则表示认证成功,返回0则表示认证失败。

登录成功后可查询用户

在这里插入图片描述
在这里插入图片描述

创建账号后向新数据库插入document的流程

重点:必须理解使用admin登录,登录后切换到对应数据库。和后面使用Navicat是一样的。

启动客户端

代码语言:javascript
复制
# ./mongo

使用admin数据库

代码语言:javascript
复制
# use admin

登录

代码语言:javascript
复制
# db.auth("bjsxt","bjsxtpwd")

切换到sxt数据库下。在MongoDB中如果数据库不存在use时会新建数据库。

代码语言:javascript
复制
# use sxt

切换到admin下

代码语言:javascript
复制
# use admin

注意:一定要在admin下创建,否则无法登录。

代码语言:javascript
复制
# db.createUser({user:"sxt",pwd:"sxtpwd",roles:[{role:"readWrite",db:"sxt"}]});

退出客户端,Ctrl+C

代码语言:javascript
复制
# ./mongo

使用admin数据库

use admin

登录

代码语言:javascript
复制
# db.auth("bjsxt","bjsxtpwd")

切换

代码语言:javascript
复制
# use sxt

新增数据。其中sxt为collection名。

代码语言:javascript
复制
# db.sxt.insert({key:"value"});

查看数据

代码语言:javascript
复制
# db.sxt.find()

更新用户角色

如果我们需要对已存在的用户的角色做修改,那么我们可以使用db.updateUser()函数来更新用户角色。注意,该函数需要当前用户具有userAdminAnyDatabase或者更高的权限。

更新角色语法格式

代码语言:javascript
复制
db.updateUser("用户名", {"roles":[{"role":"角色名称",db:"数据库"},{"更新项2":"更新内容"}]})

流程

代码语言:javascript
复制
# use admin

使用高权限用户登录

代码语言:javascript
复制
# db.auth("bjsxt","bjsxtpwd")

修改

代码语言:javascript
复制
# db.updateUser("sxt",{"roles":[{role:"readWriteAnyDatabase",db:"sxt"}]});

更新用户密码

更新用户密码有两种方式:

1)使用db.updateUser()函数更新密码。

2)使用db.changeUserPassword()函数更新密码

更新密码方式一

使用db.upateUser()函数将bjsxt用户的密码修改为sxt。

注意:执行此命令的用户需要具有userAdmin或root权限

语法格式

db.updateUser(“用户名”,{“pwd”:“新密码”})

在这里插入图片描述
在这里插入图片描述

如果未提示任何信息则表示更新成功。退出当前客户端重新连接认证即可。

重新使用bjsxt用户登录

在这里插入图片描述
在这里插入图片描述
更新密码方式二

使用db.changeUserPassword()函数将bjsxt用户的密码修改为sxtpwd。

删除用户

通过db.dropUser()函数可删除指定用户。删除成功后会返回true。在删除用户时需要切换到执行创建用户命令所在数据库。注意:需要使用具有userAdminAnyDatabse角色管理员用户才可以删除其他用户。

流程

sxt用户在admin数据库下创建,所以需要先切换到admin下

代码语言:javascript
复制
# use admin

删除.打印true表示删除成功

代码语言:javascript
复制
# db.dropUser("sxt")
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB用户使用
    • 创建DB管理用户
      • 查看admin中的用户
        • db.createUser函数
          • 创建管理员用户
            • 5. 关闭MongoDB
              • 使用权限方式启动MongoDB
                • 用户认证
                  • 创建账号后向新数据库插入document的流程
                    • 更新用户角色
                      • 更新角色语法格式
                      • 流程
                      • 更新用户密码
                  相关产品与服务
                  云数据库 MongoDB
                  腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档