【mongoDB】mongodb权限验证 || mongodb重启 || mongodb常用命令

news/2024/4/17 16:44:24

mongodb版本号

6.0


前言

  • mongoDB刚开始无需密码登录
  • mongoDB有3默认数据库,分别为:
    1. admin 超级用户,能对所有数据库操作,执行管理员命令
    2. config 分片集群配置的数据库
    3. local 分片集群锁信息的集合
    4. test 这个数据库一般是隐式创建的,没有显示出来。若你进入到数据库,默认进入test数据库,若你没有指定数据库,直接添加数据db.insert({name:'123'}),会添加到test数据库
      在这里插入图片描述

角色介绍

一、角色参考

名称角色
read、readWrite数据库用户角色
dbAdmin、dbOwner、userAdmin数据库管理角色
clusterAdmin、clusterManager、clusterMonitor、hostManage集群管理角色
readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase所有数据库角色
backup、restore备份恢复角
root超级用户角色
__system内部角色

二、角色作用

名称作用注意备注
read只读不可对数据库进行操作,只能查询数据
readWrite读写可对数据库查询、修改、删除、添加等操作
dbAdmin数据库管理可对数据库执行管理函数,如创建索引
userAdmin管理数据库用户可创建、删除和管理用户
clusterAdmin赋予用户所有分片和复制集相关函数的管理权限仅admin数据库中可用
readAnyDatabase赋予用户所有数据库的读权限仅admin数据库中可用
readWriteAnyDatabase赋予用户所有数据库的读写权限仅admin数据库中可用
userAdminAnyDatabase赋予用户所有数据库的userAdmin权限仅admin数据库中可用
dbAdminAnyDatabase赋予用户所有数据库的dbAdmin权限仅admin数据库中可用
dbAdminAnyDatabase赋予用户所有数据库的dbAdmin权限仅admin数据库中可用
root超级账号,超级权限别的角色管不到的我要管、管到的我也要管仅admin数据库中可用

创建角色

  • use dbName 进入名为dbName的数据库
    • dbName 数据库名称

  • db.createUser({ user,pwd,roles:[{role,db}] }) 创建用户

    • user 用户名
    • pwd 密码
    • roles
      • role 分配的角色
      • db 管理的数据库

1. 开始创建角色

  1. 进入admin数据库
  2. 在admin数据库创建一个超级用户
  3. 其它数据库只可读
use admin
db.createUser({user: "root",pwd: "123456",roles: [{ role: "root", db: "admin" },'read']}
)

2. 创建完角色后修改配置(开启权限验证)

开启验证-官方参考

  • 备用地址 https://www.mongodb.com/docs/manual/tutorial/configure-scram-client-authentication/#procedure

  • 记事本打开: mongodb安装目录 > bin > mongod.cfg
    在这里插入图片描述
    找到 #security: 修改为↓
    (注意:第二行空格不要删除,复制粘贴即可)

security:authorization: enabled

重启mongodb服务

修改后最好重启下mongodb服务↓↓↓↓↓↓
mongodb服重启传送门
mongodb服重启传送门
mongodb服重启传送门
mongodb服重启传送门


3. 使用命令登录角色

  • mongosh --port 端口号 --authenticationDatabase “数据库” -u “角色用户名” -p “角色密码”

参考↓↓↓↓↓↓↓↓↓↓↓↓

mongosh --port 27017  --authenticationDatabase  "admin" -u "root" -p "123456"

3. 使用第三方工具连接数据库

mongodb://root:123456@127.0.0.1:27017/admin

例如使用compa工具参考图
在这里插入图片描述


查看创建的用户

  • 3种方式

1 ↓↓↓↓↓↓↓↓↓↓↓

show users  

2 ↓↓↓↓↓↓↓↓↓↓↓

db.system.users.find() 

3 ↓↓↓↓↓↓↓↓↓↓↓

db.runCommand({usersInfo:"userName"})

修改角色密码

db.changeUserPassword("角色用户名", "修改的密码")

修改密码和用户信息

db.runCommand({updateUser:"角色用户名",pwd:"输入修改的密码",customData:{title:"xxx"}}
)

删除角色

db.dropUser('角色名称')

切换角色

db.auth('角色名称','角色密码')

问题 || mongodb重启

  • 创建完角色最好重启下mongoDB服务
  • 不重启有时会出问题,比如已创建的角色无法使用某些命令

  • net stop mongodb 停止mongodb服务
  • net start mongodb 开启mongodb服务

net stop mongodb
net start mongodb

mongodb常用命令

命令作用备注
show dbs查看数据库
show collections显示当前数据库中的集合
show users显示用户
use dbName使用名为dbName的数据库dbName:数据库名 。空数据库不显示
db.getName()获取当前数据库的名称
db.help()mongodb帮助
show tabless查看当前数据库的表
db.users.insert({name:‘1’})往名为users的集合插入数据{name:'1'}users > 集合名称
db.users.find()查询users集合的数据users > 集合名称
db.users.drop()删除users集合users > 集合名称
db.dropDatabases()删除当前使用的数据库有权限才能删
db.help()mongodb帮助
db.help()mongodb帮助
$gt大于 >
$lt小于 <
$gte大于等于 >=
$lte小于等于 <=
$ne不等于 noe equals
$in存在于
$nin不存在于
$exists是否存在

db.collection.find({age:{$gt:18}}) //查看collection表中年龄大于不包含18岁的数据
db.collection.find({field:{$in:array}})   
db.collection.find({field:{$nin:array}})  
db.collection.find({title:{$exists:true}})//如果记录中有包含title属性的全部返回
db.collection.find({title:{$exists:false}})//如果记录中有包含title属性的全部不返回,不包含title属性的全部返回

https://www.xjx100.cn/news/306121.html

相关文章

辉哥带你学hive第一讲 hive基本介绍以及环境搭建

文章目录 1.Hive介绍1.1 hive 基本情况1.2 Hive架构原理1.3 Hive 安装1.4 元数据配置1.5 hive 服务部署1.6Hive常用交互命令1.6.1 Hive参数配置方式1.Hive介绍 1.1 hive 基本情况 hive基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表。 Hive是一个Hadoop客…

Apache Hive SQL DQL

Hive SQL--DQL-Select select语法树 SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference JOIN table_other ON expr [WHERE where_condition] [GROUP BY col_list [HAVING condition]] [CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY|…

判断数组为空、含有某值,判断数据类型,判断空对象

&#x1f449;js中判断空数组和空对象的方法_js 空数组_EntheosLee的博客-CSDN博客 &#x1f449;JavaScript判断数组是否为空、 判断数据类型_javascript判断数组为空_webhyx的博客-CSDN博客 &#x1f449;如何判断js数组是否为空_js判断数组为空_CodeChanningAz的博客-CSD…

leecode 数据库:570. 至少有5名直接下属的经理

导入数据&#xff1a; Create table If Not Exists Employee (id int, name varchar(255), department varchar(255), managerId int); Truncate table Employee; insert into Employee (id, name, department, managerId) values (101, John, A, None); insert into Employee …

Python自然语言处理:NLTK入门指南

Python自然语言处理&#xff1a;NLTK入门指南 一、Python自然语言处理简介1. 什么是自然语言处理&#xff08;NLP&#xff09;2. Python在NLP中的应用3. 为什么选择使用Python进行NLP 二、NLTK介绍1. NLTK是什么2. NLTK的历史和现状3. NLTK的安装和配置4. NLTK的基本功能分词&a…

Aztec network即将集成Compound Defi项目

1. 引言 日前&#xff0c;Compound宣布将在2022年2季度上线Aztec network的zk.money中。 Aztec Network定位为以太坊的L2隐私扩容方案&#xff0c;号称为&#xff1a;Layer 2 for the internet of money。 通过名为DeFi Aggregation的process&#xff0c;Aztec可支持cheap pr…

【本地模式】第一个Mapreduce程序-wordcount

【本地模式】&#xff1a;也就是在windows环境下通过hadoop-client相关jar包进行开发的&#xff0c;我们只需要通过本地自己写好MapReduce程序即可在本地运行。 一个Maprduce程序主要包括三部分&#xff1a;Mapper类、Reducer类、执行类。 map阶段&#xff1a;将每一行单词提…

网工视角看基础网络,原来这么与众不同

大家好&#xff0c;我是老杨。 前两天去华为生态大会刚回来&#xff0c;颇为感慨。 感慨万物互联的世界越来越大&#xff0c;网络渗透度也越来越极致化。 网络很大&#xff0c;非常大&#xff0c;但在网工眼里&#xff0c;网络复杂又美妙&#xff0c;有着外行人难以理解的魅…