单实例_服务端开启&客户端登录验证|学习笔记

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 快速学习单实例_服务端开启&客户端登录验证

开发者学堂课程【MongoDB精讲课程(下)单实例_服务端开启&客户端登录验证】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/727/detail/12992


单实例_服务端开启&客户端登录验证


内容介绍:

一、添加用户和权限

二、服务端开启认证和客户端连接登录

 

一、添加用户和权限

回顾

//测试是否可用

> db.auth(‘’bobo’’,’’123456’’)

只增添了普通用户和管理员用户,并没有开启认证,效果为退出客户端后再登陆不需要输入用户名和密码也可以查看 dbs。

image.png

如果想要通过用户登录之后操作,比如设置安全认证,需要从服务端开启认证。开启认证后再链接登录则需要登录用户才能进行操作


二、服务端开启认证和客户端连接登录

1. 关闭已经启动的服务

(1)V使用 linux 命令杀死进程

[root@bobohost sing1e]# ps -ef lgrep mongo

Root   23482   1 0 08:08 ?   00:00:55 /usr/1ocal / mongodb/bin/mongod -f

/mongodb/singTe/mongod. Conf

[root@bobohost single]# ki17 -2 23482

杀掉当天进程后重启,直接启动是没有效果的,此时启动与之前搭建的环境相同,不需要登陆。有两种方式开启权限认证启动服务

(2)在 mongo 客户端中使用 shutdownServer 命令来关闭

> db . shutdownserver()

shutdown command only works with the admin database; try 'use admin'>use admin

switched to db admin> db. Shutdownserver()

2019-08-14T11:20:16.450+0800 E QUERY [js] Error: shutdownserver failed: {

"ok" : 0,

"errmsg" : "shutdown must run from loca7host when running db without auth","code" : 13,

"codeName" : "unauthorized"

} :

_getErrorwithcode@src/mongo/she11/uti1s.js:25:13DB.prototype.shutdownserver@src/mongo/she11/db.js:453:1a(she11):1:1

需要几个条件:

必须是在 admin 库下执行该关闭服务命令。

如果没有开启认证,必须是从 localhost 登陆的,才能执行关闭服务命令。

·非 localhost 的、通过远程登录的,必须有登录且必须登录用户有对 admin 操作权限才可以。 

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

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

(1)参数方式

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

/usr/loca1/mongodb/bin/mongod-f /mongodb/single/mongod.conf --auth

需要登陆用户才能进行操作。此方法简单但是每次启动都需要带上参数,如果忘记则任何一个知道你的IP地址和登陆号就可以直接登陆,不安全不严谨,所以开发中很少用. 

(2)配置文件方式

在 mongod.conf 配置文件中加入:

vim /mongodb/single/mongod.conf

security :

#开启授权认证

authorization: enab1ed

启动时可不加--auth 参数:

/usr/loca1/mongodb/bin/mongod -f /mongodb/single/mongod.conf

此时再登陆相当于服务端开启了认证,就不能随意操作。此时登陆的比赛可以连上但是什么也看不见。也可以切换admin账户,虽然显示切换到了admin账户,但是调用命令,展示集合,发现没有登陆什么也看不见。

3. 开启了认证的情况下的客户端登录

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

(1)先连接再认证

[root@bobohost bin]# /usr/loca1/mongodb/bin/mongo --host 180.76.159.126 --port 27017MongoDB she17 version v4.0.10

connecting to: mongodb: //180.76.159.126:27017/?gssapiserviceName=mongodb

Implicit session: session { "id" : uUID("53fef661-35d6-4d29-b07c-020291d62e1a") }MongoDB server version : 4.0.10

提示:

开启认证后再登录,发现打印的日志比较少了。

相关操作需要认证才可以:

查询 admin 库中的 system.users 集合的用户:

> use admin

switched to db admin> db. system.users.findError: error: {

"ok" : 0,

"errmsg" : "command find requires authentication" ,

"code" : 13,

"codeName" : "unauthorized"

}

> db.auth( "myroot" , "123456")

1

> db.system.users.find()

此时登陆的是超管账户,可以看见所有的库,可以对每一个库进行操作。

登陆普通用户需要先退出切换到 aticledb 之后再连接。

查询 articledb 库中的 comment 集合的内容:

> use atic1edb

switched to db articledb>db . comment.find(

Error: error: {

"ok" : 0,

"errmsg" : "not authorized on articledb to execute command { find: \ "comment\",fi1ter: f,1sid: i id: uUID(\"53fef661-35d6-4d29-b07c-020291d62e1a\")},Sdb:

\ "articledb\" }",

此时只有 aticledb 的读写权限,与超级管理员用户不同,此时的操作权限只在aticledb,只能看到 aticledb 库。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
1月前
|
网络协议 Python
客户端实例
客户端实例。
58 26
|
4月前
|
安全 API 网络架构
9-6|我现在请求一个接口,怎么关闭认证啊
9-6|我现在请求一个接口,怎么关闭认证啊
|
Web App开发 缓存 网络协议
如何实现服务端向客户端推送数据
常见的http协议只能从客户端主动向服务端请求数据,而服务端无法向客户端发送数据.本文通过介绍几种方式来实现上述功能.
|
7月前
|
NoSQL Redis 数据安全/隐私保护
大事件后端项目35——登录优化_redis_主动失效机制实现
大事件后端项目35——登录优化_redis_主动失效机制实现
|
8月前
|
消息中间件 JavaScript 小程序
MQTT常见问题之mqtt通过token连接成功之后立马就断掉如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
8月前
|
缓存 关系型数据库 Nacos
nacos常见问题之服务端不开启鉴权日志一直报403如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
754 2
|
8月前
|
存储 JSON 监控
源码分析Zabbix客户端如何向服务端发起请求
源码分析Zabbix客户端如何向服务端发起请求
90 2
|
Java 开发者
JavaHTTP心跳:服务器与客户端实时连接的实现方式
JavaHTTP心跳:服务器与客户端实时连接的实现方式 在网络通信中,实时连接是一种至关重要的功能。它允许服务器与客户端之间保持持久的通信信道,实现快速、高效的数据传输。对于Java开发者来说,实现服务器与客户端之间的实时连接可以通过JavaHTTP心跳技术来实现。本文将介绍如何利用JavaHTTP心跳来实现服务器与客户端之间的实时连接。
364 0
|
Java API Nacos
sentinel 控制台控制客户端配置 | 学习笔记
快速学习 sentinel 控制台控制客户端配置
217 0
sentinel 控制台控制客户端配置 | 学习笔记
|
运维 Java 数据库连接
排除法,先找客户端问题,再找服务端问题
先找客户端问题,再找服务端问题
90 0