MongoDB AUTH结果验证及开启方法

时间:2022-08-26 00:02:45
 
 
 
  1. 创建超级管理员(root)和普通用户(gxpt)

#创建超级管理员(root)
RS1:PRIMARY> use admin
RS1:PRIMARY> db.createUser( 
  { user: "root", 
    pwd: "root", 
    roles: [ { role: "root", db: "admin" } ] 
  } 
); 
 
root用户所属admin数据库
RS1:PRIMARY>  db.auth('root', 'root');
1  返回1 则执行成功
#创建普通用户(gxpt)
#切换至gxpt数据库
RS1:PRIMARY>use gxpt
RS1:PRIMARY>db.createUser( 
  { user: "gxpt", 
    pwd: "gxpt", 
    roles: [ { role: "readWrite", db: "gxpt" } ] 
  } 
); 
gxpt用户所属gxpt数据库
认证用户(gxpt)
RS1:PRIMARY> db.auth("gxpt","gxpt");
1
1返回1 则执行成功
  1. 服务端确认当前用户

RS1:PRIMARY> use admin;
 switched to db admin
RS1:PRIMARY> show users;
{
        "_id" : "admin.root",
        "user" : "root",
        "db" : "admin",
        "roles" : [
                {
                        "role" : "root",
                        "db" : "admin"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}
RS1:PRIMARY> use gxpt;
switched to db gxpt
RS1:PRIMARY> show users;
{
        "_id" : "gxpt.gxpt",
        "user" : "gxpt",
        "db" : "gxpt",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "gxpt"
                }
        ],
        "mechanisms" : [
                "SCRAM-SHA-1",
                "SCRAM-SHA-256"
        ]
}
}用户权限如下  
用户  
角色                      
身份
root 
root
超级管理员
gxpt
readWrite
普通用户
 
  1. 未开启AUTH认证

    1. root用户登录

新建数据库
MongoDB AUTH结果验证及开启方法MongoDB AUTH结果验证及开启方法
ok
删除数据库
MongoDB AUTH结果验证及开启方法MongoDB AUTH结果验证及开启方法
ok
    1. gxpt用户登录

新建数据库
MongoDB AUTH结果验证及开启方法MongoDB AUTH结果验证及开启方法
ok
删除数据库
MongoDB AUTH结果验证及开启方法MongoDB AUTH结果验证及开启方法
ok
结论:未启用AUTH,普通用户可以对任何数据库做 创建、删除操作!!!
因此为了规避不规范操作,必须开始Mongo的AUTH认证
 
  1. 官方文档对于角色 <root>的描述

MongoDB AUTH结果验证及开启方法MongoDB AUTH结果验证及开启方法
可见:角色<root>是涵盖 readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin, restore, and backup等角色的超级角色
 
  1. 生成秘钥文件

[root@MongoDB236 ~]# openssl rand -base64 100 > /opt/var/data/mongodb/mongodb.key
[root@MongoDB236 ~]# chmod 600 /opt/var/data/mongodb/mongodb.key
请根据初始化参数文件指定该文件名称及目录
远程拷贝至其他节点
[root@MongoDB236 ~]# scp /opt/var/data/mongodb/mongodb.key 192.168.8.237:/opt/var/data/
[root@MongoDB236 ~]# scp /opt/var/data/mongodb/mongodb.key 192.168.8.238:/opt/var/data/
 
  1. 修改初始化参数文件 xxxx.conf文件

。。。
keyFile=/opt/var/data/mongodb/mongodb.key
auth=true
。。。
请放开以上参数
  1. 分别在三个节点重新启动MongoDB

[root@MongoDB236 ~]# service mongodb stop
[root@MongoDB236 ~]# service mongodb start
 
  1. 开启AUTH认证

需要在未启用AUTH的情况下对 admin 和 gxpt启用认证。
> db.auth("admin","admin");
1
> db.auth("gxpt","gxpt");
1
返回1 表明操作正常
 
[root@Mongodb237 mongodb]# mongo -usuper -psuper 127.0.0.1/admin
MongoDB shell version v4.0.0
MongoDB server version: 4.0.0
> db;db;
admin
> show dbs;show dbs;
admin  0.000GB
gxpt   0.000GB
local  0.000GB
ok
 
 
    1. root用户登录

super用户对gxpt数据库创建collection MongoDB AUTH结果验证及开启方法MongoDB AUTH结果验证及开启方法
ok
super用户对gxpt数据库创建collection
MongoDB AUTH结果验证及开启方法MongoDB AUTH结果验证及开启方法
Ok
 
    1. gxpt用户登录

gxpt只对gxpt数据库有读写权限,因此可以正常 创建、删除collection
MongoDB AUTH结果验证及开启方法MongoDB AUTH结果验证及开启方法
MongoDB AUTH结果验证及开启方法MongoDB AUTH结果验证及开启方法
对于其他数据库没有读写权限!!!因此其他数据库不可见
MongoDB AUTH结果验证及开启方法MongoDB AUTH结果验证及开启方法
借用客户端对其他库创建collection 报错:未经过认证
结论:启用AUTH之后,普通用户只对所属的数据库有操作权限。
 

MongoDB AUTH结果验证及开启方法的更多相关文章

  1. MongoDB AUTH结果验证

      创建超级管理员和普通用户 #创建超级管理员 super db.createUser( { user: "super", pwd: "super", role ...

  2. 关于Mysql5&period;6半同步主从复制的开启方法【转】

    介绍 先了解一下mysql的主从复制是什么回事,我们都知道,mysql主从复制是基于binlog的复制方式,而mysql默认的主从复制方式,其实是异步复制. 主库实际上并不关心从库是否把数据拉完没有, ...

  3. mongodb添加登陆验证

    mongodb添加登陆验证 转载地址 清空log,db目录 mongod --auth --logpath "D:\mongodb\log\log.log" --logappend ...

  4. SQLSERVER误删除了Windows登录用户验证方式使用Windows身份验证的解决方法

    SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法 今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问 ...

  5. Django Auth模块及User对象方法

    一:Django的用户认证 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1:authenticat ...

  6. EMF学习,为了实现可扩展可自定义的模型验证 - 各种实现方法学习

    自: http://blog.csdn.net/javaman_chen/article/details/6057033 http://www.ibm.com/developerworks/cn/op ...

  7. EasyUI 验证框使用方法

    使用过程中的一积累,备查. EasyUI 验证框使用方法://***************************missingMessage:未填写时显示的信息validType:验证类型见下示例 ...

  8. oracle RAC--归档日志的开启方法

    oracle RAC--归档日志的开启方法 2011-10-07 15:53:04 分类: Oracle oracle RAC--归档日志的开启方法   ======================= ...

  9. Oracle高版本导出dmp导入Oracle低版本报错:&quot&semi;不是有效的导出文件、头部验证失败&quot&semi;解决方法

    从Oracle高版本中导出dmp,然后导入到Oracle低版本时会报错:"不是有效的导出文件.头部验证失败",解决方法: 方法一:下载软件:AlxcTools,打开后选择要修改的文 ...

随机推荐

  1. ubuntu host备份 ubuntu无法解析主机

    /etc/hosts # Copyright (c) 2014-2016, racaljk.# https://github.com/racaljk/hosts# Last updated: 2016 ...

  2. windows原生开发之界面疑云

        windows桌面开发,界面始终是最大的困惑.我们对前端工具的要求,其实只有窗体设计器.消息映射,过分点的话自适应屏幕.模型绑定.能够免于手工书写,其实这个问题并不复杂,但VS不实现.QT语法 ...

  3. 最短路SPFA

    用邻接矩阵a表示一幅图,a[i][j]表示从点i到点j的边长,如果为0则无边.(这是无负边,0边的情况) 这张图有T个点,C条边,要求求出从Ts走到Te的最短路. 用f[i]表示从Ts走到i点的最短路 ...

  4. easyui datagrid 单元格编辑 即见即所得&comma;MVC菜单维护,扫描增加

    效果如图: 参见 EasyUI 官方 Demo 及文档 @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Lay ...

  5. leetcode 之 two sum (easy)c&plus;&plus;

    1.数组的长度 length() .容器vector长度  size() .容器vector vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库. ...

  6. Kafka Topic Api

    Pom: <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.10 ...

  7. Python十讲

    第一讲:从零开始学Python 第二讲:变量和基础数据类型 第三讲:条件分支以及循环 第四讲:列表与元组 第五讲:字典 第六讲:函数 第七讲:类 第八讲:标准库 第九讲:异常 第十讲:文件处理

  8. redis支持的数据结构

    redis数据库里面的每个键值对都是由对象组成的. 其中数据库键的值总是字符串对象. 数据库的值则可以是字符串对象(String),列表对象(list),哈希对象(Hash),集合对象(Set),有序 ...

  9. &lbrack;转&rsqb;廖雪峰Git教程总结

  10. assert&period;doesNotThrow&lpar;&rpar;

    assert.doesNotThrow(block[, error][, message]) 断言 block 函数不会抛出错误.查阅 assert.throws() 了解更多详情. 当调用 asse ...