MongoDB 单实例节点主机的用户和权限一般操作步骤
步骤总结:
1.先正常启动
2.创建用户,创建数据库病授权用户
3.关闭程序,开启安全,然后启动
4.使用账号和密码连接
- 按未开启认证的方式(配置文件中没开启安全选项并且启动命令中不添加
--auth参数,)来启动MongoDB服务 - 使用Mongo客户端登录,然后创建管理用户:
# 切换到admin库
> use admin
# 创建系统超级用户 myroot,设置密码12345,设置角色root
> db.createUser({user:"myroot",pwd:"12345",roles:[{"role":"root","db":"admin"}]})
# 或者 db.createUser({user:"myroot",pwd:"12345",roles:["root"]})
# 创建专门用来管理admin库的账号myadmin,只用来作为用户权限的管理
> db.createUser({user:"myadmin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
# 查看已经创建了的用户的情况:
> db.system.users.find()
# 删除用户
> db.dropUser("myadmin")
# 修改密码
> db.changeUserPassword("myroot", "123456")
提示:
1)本案例创建了两个用户,分别对应超管和专门用来管理用户的角色,事实上,你只需要一个用户即可。如果你对安全要求很高,防止超管泄漏,则不要创建超管用户。
2)和其它数据库(MySQL)一样,权限的管理都差不多一样,也是将用户和权限信息保存到数据库对应的表中。Mongodb存储所有的用户信息在admin 数据库的集合system.users中,保存用户名、密码和数据库信息。
3)如果不指定数据库,则创建的指定的权限的用户在所有的数据库上有效,如 {role:"userAdminAnyDatabase", db:""}
- 认证测试
# 切换到admin
> use admin
# 密码输错
> db.auth("myroot","12345")
Error: Authentication failed.
0
# 密码正确
> db.auth("myroot","123456")
1
- 创建普通用户
创建普通用户可以在没有开启认证的时候添加,也可以在开启认证之后添加,但开启认证之后,必须使用有操作admin库的用户登录认证后才能操作。
底层都是将用户信息保存在了admin数据库的集合system.users中。
# 创建(切换)将来要操作的数据库articledb,
> use articledb
switched to db articledb
# 创建用户,拥有articledb数据库的读写权限readWrite,密码是123456
> db.createUser({user:"bobo", pwd: "123456", roles: [{role:"readWrite",db:"articledb"}]})
# 或者 db.createUser({user: "bobo", pwd: "123456", roles: ["readWrite"]})
# 测试是否可用
> db.auth("bobo","123456")
1
提示:
如果开启了认证后,登录的客户端的用户必须使用admin库的角色,如拥有root角色的myadmin用户,再通过myadmin用户去创建其他角色的用户
- 服务端开启认证
(1)关闭已经启动的服务
1)使用linux命令杀死进程
2)在mongo客户端中使用shutdownServer命令来关闭
> use admin
switched to db admin
> db.shutdownServer()
需要几个条件:
- 必须是在 admin库下执行该关闭服务命令。
- 如果没有开启认证,必须是从 localhost登陆的,才能执行关闭服务命令。
- 非 localhost的、通过远程登录的,必须有登录且必须登录用户有对admin操作权限才可以。
(2)以开启认证的方式启动服务
有两种方式开启权限认证启动服务:一种是参数方式,一种是配置文件方式。
1)参数方式
在启动时指定参数 --auth ,如:
mongod -f mongod.conf --auth
- 配置文件方式
在mongod.conf配置文件中加入:
vim mongod.conf
security:
#开启授权认证
authorization: enabled
此时启动就不指定参数 --auth了 ,如:
mongod -f mongod.conf
- 客户端连接登录
有两种认证方式,一种是先登录,在mongo shell中认证;一种是登录时直接认证。
1)先连接再认证
# mongo --host 192.168.0.253 --port 27017
> use articledb
switched to db articledb
> db.auth("bobo","123456")
1
> db.comment.find()
>
2)连接时直接认证
# 对admin数据库进行登录认证和相关操作:
mongo --host 192.168.0.253 --port 27017 --authenticationDatabase admin -u myroot -p 123456
# 对articledb数据库进行登录认证和相关操作:
mongo --host 192.168.0.253 --port 27017 --authenticationDatabase articledb -u bobo -p 123456
提示:
- -u :用户名
- -p :密码
- --authenticationDatabase :指定连接到哪个库。当登录是指定用户名密码时,必须指定对应的数据库!
MongoDB 单实例节点主机的用户和权限一般操作步骤的更多相关文章
- MongoDB 副本集的用户和权限一般操作步骤
步骤总结: 在主节点上添加超管用户,副本集会自动同步 按照仲裁者.副本节点.主节点的先后顺序关闭所有节点服务 创建副本集认证的key文件,复制到每个服务所在目录 修改每个服务的配置文件,增加参数 启动 ...
- MongoDB 分片集群的用户和权限一般操作步骤
步骤总结: 按照mongos路由.配置副本集服务,分片副本集服务的先后顺序关闭所有节点服务 创建副本集认证的key文件,复制到每个服务所在目录 修改每个服务的配置文件,增加参数 启动每个服务 创建账号 ...
- Linux下MongoDB单实例的安装和配置详解
推荐网站 MongoDB官网:http://www.mongodb.org/ MongoDB学习网站:http://www.runoob.com/mongodb 一.创建MongoDB的资源目录和安装 ...
- linux 添加用户、权限
# useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录). 假 ...
- 【shiro】2.spring整合shiro,注解控制shiro用户/角色/权限And/OR,没有权限跳转到固定页面
这几天粗浅的把shiro整合到spring中,并且注解控制shiro用户/角色/权限And/OR 步骤: 1.首先maven搭建web项目 2.创建数据库 user/role/authority 其中 ...
- Linux 新建用户、用户组,给用户分配权限
注:内容来自网络 Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统.用户的账号一方面可以帮助系统管理员对 ...
- mysql的用户访问权限规划
看了mysql的关于用户权限和安全的管理,感觉看起来还是不太好理解,首先mysql的连接方式是需要核对三个要素:user.passwd. host.而且这个user和passwd并不是o上面的user ...
- linux添加用户、权限
# useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录). 假 ...
- spring security中动态更新用户的权限
在程序的执行过程中,有时有这么一种需求,需要动态的更新某些角色的权限或某些人对应的权限,当前在线的用户拥有这个角色或拥有这个权限时,在不退出系统的情况下,需要动态的改变的他所拥有的权限. 需求:张三 ...
随机推荐
- 边缘计算 KubeEdge+EdgeMash
简介 KubeEdge是面向边缘计算场景.专为边云协同设计的业界首个云原生边缘计算框架,在 Kubernetes 原生的容器编排调度能力之上实现了边云之间的应用协同.资源协同.数据协同和设备协同等能力 ...
- @Document注解与Lombok的区别
- 【Azure 应用服务】本地创建Azure Function Kafka Trigger 函数和Kafka output的HTTP Trigger函数实验
问题描述 在上一篇博文(https://www.cnblogs.com/lulight/p/16525902.html)中,我们成功的以VM作为Kafka服务器运行,并且验证了从其他机器中远程访问.在 ...
- 2510-Druid监控功能的深入使用与配置-基于SpringBoot-完全使用java config的形式
环境 springboot 1.5.9.RELEASE + JDK1.8 配置步骤 分两步,1 配置数据源 2 配置监控 直接上代码 1 配置数据源 package com.company.proje ...
- JVM 配置参数 -D,-X,-XX 的区别
转载请注明出处: 最近在安全护网行动,需要针对服务进行不断的安全加固,如 对服务的 log4j 的安全配置进行防护,对 fastjson 的漏洞进行安全加固等,最快的防护方法就是通过在服务启动的时候, ...
- Luogu[YNOI2019]排序(DP,线段树)
要最优?就要一步到位,不能做"马后炮",走"回头路",因此将序列映射到一个假定最优序列,发现移动原序列等价于删除原序列元素,以便生成最大不下降子序列.可线段树维 ...
- ATOM使用的一点心得与技巧——在一个窗口打开多个项目
atom作为一个后起之秀,我个人是觉得越用越好用.虽然sublimet也很棒,但是在ubuntu里不能使用中文很是恼火.网上关于修复这个bug的办法实在太多了.果断选择省事的atom.虽然比起subl ...
- 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(13)-Fiddler请求和响应断点调试
1.简介 Fiddler有个强大的功能,可以修改发送到服务器的数据包,但是修改前需要拦截,即设置断点.设置断点后,开始拦截接下来所有网页,直到取消断点.这个功能可以在数据包发送之前,修改请求参数:在收 ...
- Excel 统计函数(四):AVERAGEIF 和 AVERAGEIFS
AVERAGEIF [语法]AVERAGEIF(range, criteria, [average_range]) [参数] range:要计算平均值的一个或多个单元格: criteria:筛选条件: ...
- Navicat的使用与python中使用MySQL的基本方法
Navicat的使用与python中使用MySQL的基本方法 Navicat的下载及安装 下载地址 http://www.navicat.com.cn/download/navicat-premium ...