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

mongodb版本号

6.0


前言

  • mongoDB刚开始无需密码登录
  • mongoDB有3默认数据库,分别为:
    1. admin 超级用户,能对所有数据库操作,执行管理员命令
    2. config 分片集群配置的数据库
    3. local 分片集群锁信息的集合
    4. test 这个数据库一般是隐式创建的,没有显示出来。若你进入到数据库,默认进入test数据库,若你没有指定数据库,直接添加数据db.col.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属性的全部返回

猜你喜欢

转载自blog.csdn.net/qq_43614372/article/details/130665047
今日推荐