资讯专栏INFORMATION COLUMN

mongoDB初阶系列一:用户和权限

CastlePeaK / 3337人阅读

摘要:本文将重点介绍的用户和权限这一部分。结果返回,表示管理员登录成功。接下来,用这个管理员给数据库创建一个普通用户,并指定其权限为。

前言

对于数据库而言,用户和权限是非常重要的一部分,因为这涉及到安全,那么mongoDB的用户和权限是怎么样的呢?

说明 环境说明

本文所用的mongoDB版本是3.6,操作系统是windows。

其他说明

限于篇幅,本文不会介绍数据库从下载到安装的过程,关于安装教程,网上有大量教程,你可以按照这些教程把它装好跑起来。本文将重点介绍mongoDB的用户和权限这一部分。

服务端和客户端

对于mongoDB,分为服务端和客户端。
在windows环境的安装目录下,直接双击打开mongod.exe,即可开启mongoDB服务。
当服务开启后,便可以双击mongo.exe打开客户端来连接到mongoDB服务。

开启授权模式

mongoDB安装后,如果直接用mongod.exe开启服务,默认是没有开启授权模式的,如果你的mongoDB没有开启授权模式,那么任何人都不需要用户名和密码也可以登录到mongoDB服务端,对你的数据库为所欲为,甚至直接删库跑路。所以,在产品环境中,请确保一定记得开启授权模式。

那么,怎么开启授权模式呢?
打开cmd,进入到安装目录的bin目录下,执行如下命令:

mongod --auth --port 27017 --dbpath /data/db

开启了授权模式后,打开mongo.exe,在admin数据库下,执行show dbs,这时,数据库会报错,提醒没有授权。如下:

用户类型

mongoDB数据库,大致分为两类用户,一种是管理员用户,一种是普通用户。

管理员

我们在admin数据库中创建一个管理员用户(userAdmin or userAdminAnyDatabase role),管理员用户可以管理普通用户。
首先,以非授权模式开启mongoDB服务。

mongod --port 27017 --dbpath /data/db

然后进入admin数据库,执行如下命令:

use admin
db.createUser(
  {
    user: "larry",
    pwd: "123456",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

当提示Successfully added user,证明这个管理员用户已经添加成功。

普通用户

当管理员用户创建成功后,我们便可以用这个管理员用户来给每个数据库来创建普通用户。
首先,关闭上面所有的mongo shell窗口。
再以授权模式开启mongoDB服务。

mongod --auth --port 27017 --dbpath /data/db

打开mongo.exe客户端,进入admin数据库,用db.auth()登录。

第一个参数是上面创建的管理员用户名larry,第二个参数是管理员用户larry的密码。
结果返回1,表示管理员larry登录成功。
接下来,用这个管理员给photo_app数据库创建一个普通用户moddx,并指定其权限为readWrite。

use photo_app
db.createUser(
{
  user: "moddx",
  pwd: "123456",
  roles: [{ role: "readWrite", db: "photo_app"}]
}
)
查看用户 全局所有账户

首先,要以管理员账户登录到admin数据库,接着执行如下命令:

db.system.users.find().pretty()

当前库下的账户

查看全局所有账户,只有管理员才可以查看,而查看当前库中的帐号,普通用户和管理员用户都可以查看,查看当前库下的帐号命令如下:

show users

删除用户

必须拥有dropUser权利的管理员帐号才能删除用户,所以,需要用管理员账户登录进行操作。
删除myblog数据库中普通用户moddx的命令如下:

use myblog
db.dropUser("moddx", {w: "majority", wtimeout: 5000})
撤销权限

撤销一个用户的权限,命令如下:

db.revokeRolesFromUser(
    "moddx",
    [
      { role: "readWrite", db: "photo_app" }
    ]
)

注意:上面命令虽然撤销了moddx用户在photo_app数据库中的读写权限,但是,用户并没有删除,依旧可以登录。

授予权限

如下命令给了用户moddx在photo_app中的读写权限,同时,给予了他在demodb数据库中的读权限

use photo_app
db.grantRolesToUser(
   "moddx",
   [ "readWrite" , { role: "read", db: "demodb" } ],
   { w: "majority" , wtimeout: 4000 }
)
修改密码

如下命令修改了photo_app中用户moddx的密码:

use photo_app
db.changeUserPassword("moddx", "newpwd")
小结

关于用户和权限部分,常用shell操作命令就这些,希望能够对你使用mongoDB带来方便。如果你需要更详细的的介绍,请参考官方文档:mongo shell methods

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19333.html

相关文章

  • mongoDB初阶系列二:node中的增删改查

    摘要:前言上一篇中初阶系列一用户和权限介绍了用户和权限,这一篇将介绍如何在中进行增删改查。这是初阶系列的第二篇,接下来还有第三篇,借助,更优雅地操作数据。 前言 上一篇中(mongoDB初阶系列一:用户和权限)介绍了用户和权限,这一篇将介绍如何在node中进行增删改查。 准备 首先,要在node中使用mongoDB,需要安装MongoDB Driver,命令如下:npm install mo...

    Barrior 评论0 收藏0
  • mongoDB初阶系列二:node中的增删改查

    摘要:前言上一篇中初阶系列一用户和权限介绍了用户和权限,这一篇将介绍如何在中进行增删改查。这是初阶系列的第二篇,接下来还有第三篇,借助,更优雅地操作数据。 前言 上一篇中(mongoDB初阶系列一:用户和权限)介绍了用户和权限,这一篇将介绍如何在node中进行增删改查。 准备 首先,要在node中使用mongoDB,需要安装MongoDB Driver,命令如下:npm install mo...

    kevin 评论0 收藏0
  • mongoDB初阶系列三:mongoose

    摘要:前言上篇初阶系列二中的增删改查中讲解了用驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用更顺畅的操控。查下面这段代码对集合进行搜索,并输出每项任务的唯一和描述,等打印完成后,关闭数据库连接。 前言 上篇 mongoDB初阶系列二:node中的增删改查 中讲解了用node驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用mongoose更顺畅的操...

    Null 评论0 收藏0
  • mongoDB初阶系列三:mongoose

    摘要:前言上篇初阶系列二中的增删改查中讲解了用驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用更顺畅的操控。查下面这段代码对集合进行搜索,并输出每项任务的唯一和描述,等打印完成后,关闭数据库连接。 前言 上篇 mongoDB初阶系列二:node中的增删改查 中讲解了用node驱动来对数据进行增删改查,本篇将继续前进,依旧通过增删改查来讲解如何用mongoose更顺畅的操...

    yzzz 评论0 收藏0
  • MongoDB用户角色解释系列(上)

    摘要:每个角色只应该为该角色授予必要的权限,并且只应该为用户分配适合其需求的角色。注解如果您还在掌握查询语言,像这样的工具有一个直观的用户管理器特性,这使得用户管理更加直观和直观。 本文来自MongoDB中文社区:http://www.mongoing.com/ 1、介绍 本文讨论保护MongoDB数据库所需的访问控制。具体来说,我们可以使用这些特性来确保只有经过授权的用户才能访问数据库。每...

    paney129 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<