• MongoDB设置密码


    关于为什么要设置密码

    公司的测试服务器MongoDB服务对外网开放的,结果这几天发现数据库被每天晚上被人清空的了,还新建了个数据库,说是要支付比特币。查了日志看到有个境外的IP登录且删除了所有的集合。所以为了安全起见,我们给mongo设置密码。

    本文档适用于Linux和Windows环境

    1. 使用客户端连接mongo服务

    切换至mongo安装目录下的bin目录,执行mongo命令连接至mongo服务。如果没有mongo脚本,可以到官网下载,也可以使用其他第三方客户端工具连接。这里的方式多种多样,只要能执行命令就行。

    Linux版本
    windows版本
    mongo高版本

    客户端工具

    2. 切换至admin数据库

    use admin
    
    • 1

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    3. 创建用户并指定密码

    db.createUser({user:"admin",pwd:"myMongoDBPassword",roles: [{role:"root",db:"admin" }]})
    
    • 1

    在admin数据库下创建的用户有所有数据库的权限

    注意设置的密码最好不要包含@:字符,这两个是连接uri 中的关键字,项目中会导致连接不上。

    关于MongoDB的内置角色
    Read:允许用户读取指定数据库 readWrite:允许用户读写指定数据库
    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    root:只在admin数据库中可用。超级账号,超级权限

    4. 修改配置文件,重启mongo服务

    创建好用户后,如果不修改配置文件,不用用户名密码可以连接的。

    配置文件中增加如下配置,启用认证。

    security:
      authorization: enabled
    
    • 1
    • 2

    然后重启mongo服务,这样密码就设置好了。

    5. 连接登录

    1. SpringBoot 项目中
      下面以yml配置文件为例
    spring:
    	  data:
    	    mongodb:
    	      #MongoDB数据库端口
    	      port: 27017
    	      #MongoDB数据库IP
    	      host: 192.168.x.x
    	      #MongoDB业务数据库
    	      database: realData
    	      #MongoDB用户名
    	      username: admin
    	      #MongoDB密码
    	      password: myMongoDBPassword
    	      #MongoDB验证数据库
    	      authentication-database: admin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    或者

    spring:
    	  data:
    	    mongodb:
    	      uri: mongodb://username:password@localhost:27017/database_name?authSource=admin
    
    • 1
    • 2
    • 3
    • 4

    从这个uri中看得出,密码中尽量不要有@:,不然程序截取的时候可能出错。

    1. Navicat连接时
      在这里插入图片描述
  • 相关阅读:
    Java NIO 文件通道 FileChannel 用法
    第71步 时间序列建模实战:ARIMA建模(Python)
    GraceUI相关的 知识
    RabbitMQ消息可靠性(一)-- 生产者消息确认
    【计算机网络笔记】什么是网络协议?
    人工智能迷惑行为大赏(AI智障)
    2022年8月的工作经历
    nginx安装
    Kubeadm搭建kubernetes集群
    【多线程】Timer任务定时器实现与盲等原子性问题的解决
  • 原文地址:https://blog.csdn.net/yuanchengmm/article/details/134199402