MongoDB系列---用户及权限管理02

MongoDB-——Privilege


学习大纲:

  1、用户权限管理

  2、用户操作  


知识回顾:

   本系列上一篇博文我们讲述了如何搭建环境以及配置我们的MongoDB,通过搭建环境后我们又学习了如何通过简单的命令和配置来启动关闭我们的MongoDB。


一 用户及权限管理


前言:

  MongoDB 作为时下最为热门的数据库,那么其安全验证也是必不可少的,否则一个没有验证的数据库暴露出去,任何人可随意操作,这将是非常危险的。我们可以通过使用为MongoDB 创建用户的方式来降低风险

1 MongoDB用户权限列表

2 MongoDB用户使用

2.1 创建DB管理用户

mongodb 有一个用户管理机制,简单描述为,有一个管理用户组,这个组的用户是专门为管理普通用户而设的,暂且称之为管理员。管理员通常没有数据库的读写权限,只有操作用户的权限, 因此我们只需要赋予管理员userAdminAnyDatabase 角色即可。另外管理员账户必须在 admin 数据库下创建,3.0 版本后没有 admin 数据库,但我们可以手动 use 一个。注:use 命令在切换数据库时,如果切换到一个不存在的数据库,MongodDB会自动创建该数据库

2.1.1 切换到Admin库

  管理员需要再admin数据库下面创建,所以我们需要切换到admin数据库(3.0版本后没有这个数据库,但是我们使用use admin 会自动为我们创建这个数据库)

2.1.2 查看admin中的用户

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

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

2.1.3 db.createUser 函数

再MongoDB中我们可以用db.createUser({用户信息})函数创建用户

db.createUser({
    user: "<name>",
    pwd: "<cleartext password>",
    customData: { <any information> },
    roles: [
        { role: "<role>", db: "<database>" } | "<role>",
        ...
    ]
});    

1)user:新建用户名

2)pwd:新建用户密码

3)customData:存放一些用户相关的自定义数据,我们一般省略该属性。

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

2.1.4 创建管理员用户

我们现在需要在 admin 库中创建一个名为 test的管理员用户,密码为 test,并为其赋予userAdminAnyDatabase权限(忘了权限可以看看上面的图片介绍),并通过‘db‘参数指定了它所对应的admin库

db.createUser({user:‘test‘,pwd:‘test‘,roles:[{role:‘userAdminAnyDatabase‘,db:‘admin‘}]})

创建成功后我们可以看到如下提示:

接着我们用db.system.users.find()命令来查看我们创建的用户信息(要首先进入admin数据库下再使用这条命令!)

如果正确输入命令后没有查看到新创建的角色信息,那么我们需要重启MongoDB,然后再去查看(重启就是关闭MongoDB服务,然后开启MongoDB,忘记的可以看我们系列的上一篇博文)

就此我们创建角色并赋予了个简单的权限就已经ok了。


2.1.6 使用权限方式启动MongoDB

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

改完后是这个样子。

然后重启我们的MongoDB服务(就是关闭再重新开启!)

5.1.7 用户认证

由于我们刚刚设置了以权限的方式启动MongoDB,那么我们再进入系统的话就不能直接操作了,需要进行认证!

如果我们没认证直接操作命令(可以进行use 数据库)会报错,没有权限

所以我们需要输入认证函数

格式:
    db.auth(‘user‘,‘pwd‘)

例如用我们刚刚创建的test账户
    db.auth(‘test‘,‘test‘)

切记:

  我们需要首先进入我们该用户所对应的数据库,否则就会像下面第一条命令这样,

0 代表 失败

1 代表登录成功

2.2 创建普通用户

普通用户由管理员创建。通常需要指定某个数据库来操作

2.2.1 需求

  我们创建一个名为day的数据库,给这个数据库添加一个用户,用户名为day,密码为day。并授予该用户对day数据库进行读写操作的权限

2.2.2 使用管理员用户登录

(如果还保持刚刚test账户的状态,那么可以跳过此步骤)

普通用户需要由管理员创建并授权。所以,我们首先做的就是用管理员账户登录数据库。

2.2.3 创建day数据库

use命令进行切换的时候,如果库不存在则自动创建该数据库

use day

2.2.4 创建普通用户

根据我们上方的需求来创建。

db.createUser({user:‘day‘,pwd:‘day‘,roles:[{role:‘readWrite‘,db:‘day‘}]})

2.2.5 使用普通用户

打开一个新的客户端(我这里用的XShell),

因为我们已经配置了环境变量,所以我们只需要再任意目录输入mongo即可启动客户端

2.2.6 切换到day数据库

由于我们是再day数据库中创建额day用户,所以需要先切换到day库

2.2.7 登录普通用户

我们首先来认证下。

就此我们的普通用户就已经创建成功了

2.3 更新用户角色

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

2.3.1 更新角色语法格式

db.updateUser( "roles":[{"role":"角色名称"},{"更新项 2":"更新内容"}])

2.3.2 需求

  目前test管理员用户具备userAdminAnyDatabase用户管理橘色,我们为该用户添加一个dbAdminAnyDatabase数据库管理角色

2.3.3 更新角色

db.updateUser(‘test‘,{roles:[{role:‘userAdminAnyDatabase‘,db:‘admin‘},{role:‘dbAdminAnyDatabase‘,db:‘admin‘}]})

如果没有提示任何信息则表示更新成功。退出当前客户端重新连接即可生效

2.3.4 查看用户信息

show usres 命令

通过 show users 命令查看到test用户的角色已经发生了变化,增加了dbAdminAnyDatabase角色权限。

2.4 更新用户密码

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

1)使用db.updateUser()函数更新密码,必须有用户管理权限才能使用

2)使用db.changeUserPassword()函数更新密码。必须有用户管理全出现才能使用

2.4.1 db.updateUser()方式更新密码

  需求:

    使用db.updateUser()函数将test用户的密码修改为testtest

  语法格式: 

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

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

重新使用test用户登录

2.4.2 db.changeUserPassword() 方式更新密码

 需求:

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

  语法格式:

db.changeUserPassword(‘用户名‘,‘新密码‘)

如果什么都未提示则代表更新成功。退出当前客户端重新连接认证即可

重新使用test用户登录

就此更改密码的两种方式已经完成了。

2.5 删除用户

  通过db.dropUser()函数可以删除指定的用户。删除成功后会返回true。在删除用户时候需要切换到创建用户所指定的数据库中才可以删除。

  注意:需要使用具有userAdminAnyDatabase角色管理员用户才可以删除其它用户

2.5.1 需求

我们使用db.dropUser()函数将day用户删除

2.5.2 切换数据库

day 用户在day数据库中,所以需要先切换到day数据库中

2.5.3 通过函数删除用户

我们可以看到,该函数返回了true,标识删除成功!

就此我们日常操作权限,管理用户的命令就已经学完了,很枯燥需要多练喔!

原文地址:https://www.cnblogs.com/arebirth/p/mongodbprivilege02.html

时间: 2024-08-27 13:39:34

MongoDB系列---用户及权限管理02的相关文章

linux用户及权限管理

[文件管理.管道.用户及组管理.用户及权限管理]\用户及组管理 用户与组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问:另一方面也可以帮助用户组织文件,并为用户提供安全性保护.每个用户账号都拥有一个惟一的用户名和各自的口令.用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录.实现用户账号的管理

【linux相识相知】用户及权限管理

linux系统是多用户(Multi-users)和多任务(Multi-tasks)的,这样的目的是为了一台linux主机可以给很多用户提供服务同时运行多种服务,但是我们是怎么区分每个用户呢?作为一个管理员我对linux系统权限有哪些?作为一个普通的用户又可以对linux系统有哪些操作呢?这里就牵扯到了linux的用户类别和权限管理.本次博客就用户和权限管理作出详细的解释. 用户和组类型 在linux系统中,有着用户和组着两个概念,用户是被包含在组里面的. 用户可以分为以下2中类别: 管理员:也就

mongoDB之用户及权限设置

之前用MongoDB没有设置用户和权限,一直都是本机应用程序连接MongoDB.在服务器上部署后对外没有开数据库连接端口,本机应用程序连接再开放应用程序端口供外部访问.想想很不对劲还是设置下用户授权吧. 我部署的环境是windows下MongoDB2.4.8版本.首先要开启安全模式的话,在启动MongoDB服务的时候就要加上--auth参数,命令如下: D:\mongodb>mongod.exe --dbpath D:\mongodb\data --logpath=D:\mongodb\logs

MongoDB的账户与权限管理及在Python与Java中的登录

本文主要介绍了MongoDB的账户新建,权限管理(简单的),以及在Python,Java和默认客户端中的登陆. 默认的MongoDB是没有账户权限管理的,也就是说,不需要密码即可登陆,即可拥有读写的权限(当然,重启服务还是需要在本机执行).这个对于自己做实验室足够使用的,但是对于开放数据给他人使用时很不安全的,倒不是怕窃取数据,主要是怕某些猪队友一下把db给drop了,如果没有容灾备份哭都来不及.对于MongoDB的权限配置,我看着官方文档和别人的笔记也算是踩过坑的人了,把踩过的坑写出来给大家看

(转)Mysql用户与权限管理

========对于ROOT用户的密码操作(更改用户密码)======== 刚刚安装完的Mysql,只一有个root用户,密码为空,而且只能在本机登录! 为root加上密码xxx123:./bin/mysqladmin -u root password xxx123或写成./bin/mysqladmin -uroot password xxx123 加下密码之后,在本进行进入mysql:./bin/mysql -uroot -p 更改root的密码由xxx123改为yy1234:./bin/my

【转】mysql 用户及权限管理 小结

转自:https://www.cnblogs.com/SQL888/p/5748824.html mysql 用户及权限管理 小结 MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命令可以为 MySQL 创建一个新用户: 1 CREATE USER username IDENTIFIED BY 'password'; 新用户创建完成,但是此刻如果以

第15章 mysql 用户、权限管理

2015-10-24 目录 参考资料 [1] 唐汉明.深入浅出MySQL 数据库开发.优化与管理维护(第2版)[M].北京:人民邮电出版社,2014 [2] Schwartz.高性能MySQL(第3版)[M].北京:电子工业出版社,2013 [3] 范德兰斯.MySQL开发者SQL权威指南 [M].北京:机械工业出版社,2008 [4] Forta.MySQL必知必会 [M].北京:人民邮电出版社,2009 [5] Chapter 6 Security [6] 5.7. MySQL访问权限系统

Jenkins2.32用户和权限管理策略

前言 在使用jenkins的过程中,需要为不同的角色分配相应的权限,如果jenkins的用户数据能和公司现在的帐号系统结合起来那会更好. 关于如何为用户分组,我推荐使用 role based authorization strategy 这个插件 我的环境如下: 版本:Jenkins ver. 2.32.3 系统:windows 7 x64 进入用户管理 如果使用的是jenkins内置的用户数据库,操作方法如下: 1.使用管理员帐号登录,选择 Configure Global Security 

对liunx系统中用户和权限管理一点小心得

近期才接触Liunx,给我的感觉,并不是很难,但是知识点很多,命令杂,并且附带了茫茫多的选项.接下来我就拿用户和权限管理来举个例子. 一丶用户&组的创建,管理. 用户,顾名思义,就是在系统上的接口进行操作的人. 用户分为:1.管理员(root)2.普通用户(user):系统用户和登录用户 管理员比较好理解,好比说一个国家的国王,拥有对国家最高的指挥权.root在linux系统中就扮演了国王的角色,任何的权限对它来说都形同虚设. 而普通用户,相当于这个国家的公民,必须遵循国家规定的法律. 普通用户