步骤总结:

1.先正常启动

2.创建用户,创建数据库病授权用户

3.关闭程序,开启安全,然后启动

4.使用账号和密码连接

  1. 按未开启认证的方式(配置文件中没开启安全选项并且启动命令中不添加 --auth 参数,)来启动MongoDB服务
  2. 使用Mongo客户端登录,然后创建管理用户:
  1. # 切换到admin库
  2. > use admin
  3. # 创建系统超级用户 myroot,设置密码12345,设置角色root
  4. > db.createUser({user:"myroot",pwd:"12345",roles:[{"role":"root","db":"admin"}]})
  5. # 或者 db.createUser({user:"myroot",pwd:"12345",roles:["root"]})
  6. # 创建专门用来管理admin库的账号myadmin,只用来作为用户权限的管理
  7. > db.createUser({user:"myadmin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
  8. # 查看已经创建了的用户的情况:
  9. > db.system.users.find()
  10. # 删除用户
  11. > db.dropUser("myadmin")
  12. # 修改密码
  13. > db.changeUserPassword("myroot", "123456")

提示:

1)本案例创建了两个用户,分别对应超管和专门用来管理用户的角色,事实上,你只需要一个用户即可。如果你对安全要求很高,防止超管泄漏,则不要创建超管用户。

2)和其它数据库(MySQL)一样,权限的管理都差不多一样,也是将用户和权限信息保存到数据库对应的表中。Mongodb存储所有的用户信息在admin 数据库的集合system.users中,保存用户名、密码和数据库信息。

3)如果不指定数据库,则创建的指定的权限的用户在所有的数据库上有效,如 {role:"userAdminAnyDatabase", db:""}

  1. 认证测试
  1. # 切换到admin
  2. > use admin
  3. # 密码输错
  4. > db.auth("myroot","12345")
  5. Error: Authentication failed.
  6. 0
  7. # 密码正确
  8. > db.auth("myroot","123456")
  9. 1
  1. 创建普通用户

    创建普通用户可以在没有开启认证的时候添加,也可以在开启认证之后添加,但开启认证之后,必须使用有操作admin库的用户登录认证后才能操作。

    底层都是将用户信息保存在了admin数据库的集合system.users中。
  1. # 创建(切换)将来要操作的数据库articledb,
  2. > use articledb
  3. switched to db articledb
  4. # 创建用户,拥有articledb数据库的读写权限readWrite,密码是123456
  5. > db.createUser({user:"bobo", pwd: "123456", roles: [{role:"readWrite",db:"articledb"}]})
  6. # 或者 db.createUser({user: "bobo", pwd: "123456", roles: ["readWrite"]})
  7. # 测试是否可用
  8. > db.auth("bobo","123456")
  9. 1

提示:

如果开启了认证后,登录的客户端的用户必须使用admin库的角色,如拥有root角色的myadmin用户,再通过myadmin用户去创建其他角色的用户

  1. 服务端开启认证

    (1)关闭已经启动的服务

    1)使用linux命令杀死进程

    2)在mongo客户端中使用shutdownServer命令来关闭
  1. > use admin
  2. switched to db admin
  3. > db.shutdownServer()

需要几个条件:

  • 必须是在 admin库下执行该关闭服务命令。
  • 如果没有开启认证,必须是从 localhost登陆的,才能执行关闭服务命令。
  • 非 localhost的、通过远程登录的,必须有登录且必须登录用户有对admin操作权限才可以。

(2)以开启认证的方式启动服务

有两种方式开启权限认证启动服务:一种是参数方式,一种是配置文件方式。

1)参数方式

在启动时指定参数 --auth ,如:

  1. mongod -f mongod.conf --auth
  1. 配置文件方式

    在mongod.conf配置文件中加入:
  1. vim mongod.conf
  2. security:
  3.   #开启授权认证
  4. authorization: enabled

此时启动就不指定参数 --auth了 ,如:

  1. mongod -f mongod.conf
  1. 客户端连接登录

    有两种认证方式,一种是先登录,在mongo shell中认证;一种是登录时直接认证。

    1)先连接再认证
  1. # mongo --host 192.168.0.253 --port 27017
  2. > use articledb
  3. switched to db articledb
  4. > db.auth("bobo","123456")
  5. 1
  6. > db.comment.find()
  7. >

2)连接时直接认证

  1. # 对admin数据库进行登录认证和相关操作:
  2. mongo --host 192.168.0.253 --port 27017 --authenticationDatabase admin -u myroot -p 123456
  3. # 对articledb数据库进行登录认证和相关操作:
  4. mongo --host 192.168.0.253 --port 27017 --authenticationDatabase articledb -u bobo -p 123456

提示:

  • -u :用户名
  • -p :密码
  • --authenticationDatabase :指定连接到哪个库。当登录是指定用户名密码时,必须指定对应的数据库!

MongoDB 单实例节点主机的用户和权限一般操作步骤的更多相关文章

  1. MongoDB 副本集的用户和权限一般操作步骤

    步骤总结: 在主节点上添加超管用户,副本集会自动同步 按照仲裁者.副本节点.主节点的先后顺序关闭所有节点服务 创建副本集认证的key文件,复制到每个服务所在目录 修改每个服务的配置文件,增加参数 启动 ...

  2. MongoDB 分片集群的用户和权限一般操作步骤

    步骤总结: 按照mongos路由.配置副本集服务,分片副本集服务的先后顺序关闭所有节点服务 创建副本集认证的key文件,复制到每个服务所在目录 修改每个服务的配置文件,增加参数 启动每个服务 创建账号 ...

  3. Linux下MongoDB单实例的安装和配置详解

    推荐网站 MongoDB官网:http://www.mongodb.org/ MongoDB学习网站:http://www.runoob.com/mongodb 一.创建MongoDB的资源目录和安装 ...

  4. linux 添加用户、权限

    # useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录). 假 ...

  5. 【shiro】2.spring整合shiro,注解控制shiro用户/角色/权限And/OR,没有权限跳转到固定页面

    这几天粗浅的把shiro整合到spring中,并且注解控制shiro用户/角色/权限And/OR 步骤: 1.首先maven搭建web项目 2.创建数据库 user/role/authority 其中 ...

  6. Linux 新建用户、用户组,给用户分配权限

    注:内容来自网络 Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对 ...

  7. mysql的用户访问权限规划

    看了mysql的关于用户权限和安全的管理,感觉看起来还是不太好理解,首先mysql的连接方式是需要核对三个要素:user.passwd. host.而且这个user和passwd并不是o上面的user ...

  8. linux添加用户、权限

    # useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录). 假 ...

  9. spring security中动态更新用户的权限

    在程序的执行过程中,有时有这么一种需求,需要动态的更新某些角色的权限或某些人对应的权限,当前在线的用户拥有这个角色或拥有这个权限时,在不退出系统的情况下,需要动态的改变的他所拥有的权限. 需求:张三 ...

随机推荐

  1. 5-7 分页查询PageHelper

    1. PageHelper实现分页查询 Day08 1.1 PH作用: PageHelper框架可以实现我们提供页码和每页条数, 自动实现分页效果,收集分页信息 1.2 PH原理: PageHelpe ...

  2. # 8 快速入门 dubbo

    8 快速入门 dubbo 所需资料 注册中心 Zookeeper 安装 zookeeper 官方推荐使用 zookeeper 注册中心: 注册中心负责服务地址的注册与查找,相当于目录服务: 服务提供者 ...

  3. 如何在Excel/WPS表格中批量查询顺丰快递信息?

    如何在Excel/WPS表格中批量查询顺丰快递信息? 上期我们讲了如何在Excel/WPS表格中批量查询快递信息(还不知道的小伙伴可以看这里:https://zhuanlan.zhihu.com/p/ ...

  4. 选择语句-IF和标准if-else语句以及if-else语句的扩展

    第二章 判断语句 2.1 判断语句1--if if语句的第一种格式:if if(关系表达式){ 语句体; } 执行流程 首先判断关系表达式看起结果是true还是false 如果是true就执行与具体 ...

  5. go将青龙面板里面的脚本文件都下载到本地

    纯粹练手用的,大家轻喷 青龙面板的脚本文件可以下载到本地,这样的话自己可以研究一下对应的脚本文件,能学到更多的知识,原理其实很简单,F12一下就知道了,青龙面板使用Request Headers里面放 ...

  6. 使用Mpvue配合Weui开发面试题题库微信小程序,并且发布到正式环境

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_116 之前的一篇文章详细阐述了微信小程序开发的准备和入门以及环境搭建,这一次我们介绍如何将微信小程序如何上线,同时配合weui美化 ...

  7. SElinux管理

    SElinux: 是Linux的一个强制访问控制的安全模块 SElinux的相关概念: 对象:文件.目录.进程.端口等 主体:进程称为主体 SElinux将所有的文件都赋予一个type类型的标签,所有 ...

  8. Python 阿里云盾滑块验证

    本文仅供学习交流使用,如侵立删! 记一次阿里云盾滑块验证分析并通过 操作环境 win10 . mac Python3.9 selenium.pyautogui 分析 最近在做中国庭审公开网数据分析的时 ...

  9. MySQL之JDBC编程增删改查

    MySQL之JDBC 一.JDBC是什么 Java DatabaseConnectivity (java语言连接数据库) 二.JDBC的本质 JDBC是SUN公司制定的一套接口(interface). ...

  10. ABP vNext系列文章03---依赖注入

    一.依赖注入的类型注册 ABP的依赖注入系统是基于Microsoft的依赖注入扩展库(Microsoft.Extensions.DependencyInjection nuget包)开发的.因此,它的 ...