MongoDB设置密码

关于为什么要设置密码

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

本文档适用于Linux和Windows环境

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

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



2. 切换至admin数据库

bash 复制代码
use admin



3. 创建用户并指定密码

bash 复制代码
db.createUser({user:"admin",pwd:"myMongoDBPassword",roles: [{role:"root",db:"admin" }]})

在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服务

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

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

bash 复制代码
security:
  authorization: enabled

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

5. 连接登录

  1. SpringBoot 项目中
    下面以yml配置文件为例
yaml 复制代码
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

或者

yaml 复制代码
spring:
	  data:
	    mongodb:
	      uri: mongodb://username:password@localhost:27017/database_name?authSource=admin

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

  1. Navicat连接时
相关推荐
deepdata_cn10 分钟前
向量数据库是非结构化数据的AI检索底座
数据库·人工智能
梁辰兴12 分钟前
软件工程:数据库设计
数据库·软件工程·数据库设计·逻辑设计·概念设计·梁辰兴·物理设计
10mAh22 分钟前
【Git】误删分支、reset --hard 后提交丢了怎么办?——reflog、fsck 与安全恢复实战
数据库·git·安全·回归
J_bean24 分钟前
剖析 MySQL InnoDB 共享行锁 (S) & 排他行锁 (X)
数据库·mysql·共享行锁·s lock·排他行锁·x lock
Lumistory28 分钟前
城市景观亮化设施维护管养的核心痛点与标准化解决方案
数据库·光照贴图
倒流时光三十年1 小时前
第六阶段 57 · ES|QL 与 SQL API(用 SQL 查 ES)
数据库·sql·elasticsearch
努力进修2 小时前
“数据心脏” 驱动能源自主:国产数据库支撑 Cemsol 实现固井全流程数字化闭环
数据库·人工智能·能源
vHelios2 小时前
SQL不会写?不会找关联表?复杂SQL语句编写逻辑实现思路请查收✉
数据库·sql
DB哥讲数据库2 小时前
【ClickHouse安装教程】从零开始部署高性能列式数据库(附ClickHouse安装包)
数据库·clickhouse
xiancai_xianyu2 小时前
企业智能问数怎么落地,从自然语言到SQL那道坎有多难
数据库·人工智能·sql·text2sql·企业智能问数·agentrag·ai推理可视化