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中动态更新用户的权限
在程序的执行过程中,有时有这么一种需求,需要动态的更新某些角色的权限或某些人对应的权限,当前在线的用户拥有这个角色或拥有这个权限时,在不退出系统的情况下,需要动态的改变的他所拥有的权限. 需求:张三 ...
随机推荐
- 运行Flutter时连接超时
这个墙不知道浪费了开发者多少的时间!!!!!!!!!!!!!!!!!!! 1.修改仓库地址为阿里仓库: 编辑android/build.gradle,把文件中的两处: google() jcenter ...
- Maven3 入门到入门
Maven3 Core Overview Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model,POM) ,一组标准集合,一个项目生命周期(Project ...
- ETL工具 Flume (一)
分布式日志采集系统Flume学习 一.Flume架构 1.1 Hadoop业务开发流程 1.2 Flume概述 flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统. 支持在日志系统 ...
- jdbc 08: statement应用场景
jdbc连接mysql,statement的应用场景 package com.examples.jdbc.o8_statement应用场景; import java.sql.*; import jav ...
- Codeforces Round #768 (Div. 2) D. Range and Partition // 思维 + 贪心 + 二分查找
The link to problem:Problem - D - Codeforces D. Range and Partition time limit per test: 2 second ...
- 基于gRPC编写golang简单C2远控
概述 构建一个简单的远控木马需要编写三个独立的部分:植入程序.服务端程序和管理程序. 植入程序是运行在目标机器上的远控木马的一部分.植入程序会定期轮询服务器以查找新的命令,然后将命令输出发回给服务器. ...
- WPF 截图控件之文字(七)「仿微信」
前言 接着上周写的截图控件继续更新添加 文字. 1.WPF实现截屏「仿微信」 2.WPF 实现截屏控件之移动(二)「仿微信」 3.WPF 截图控件之伸缩(三) 「仿微信」 4.WPF 截图控件之绘制方 ...
- Nginx 文件传输效率、实时、压缩配置指令
# sendfile 开启文件高效传输模式 # 默认值:off # 位置:http.servcer.location-- # 开启和不开启worker访问的文件发送到浏览器的过程不同. # 不开启的时 ...
- 【达人专栏】还不会用Apache Dolphinscheduler吗,大佬用时一个月写出的最全入门教学【二】
02 Master启动流程 2.1 MasterServer的启动 在正式开始前,笔者想先鼓励一下大家.我们知道启动Master其实就是启动MasterServer,本质上与其他SpringBoot项 ...
- 使springAOP生效不一定要加@EnableAspectJAutoProxy注解
在上篇文章<springAOP和AspectJ有关系吗?如何使用springAOP面向切面编程>中遗留了一个问题,那就是在springboot中使用springAOP需要加@EnableA ...