mogodb开启用户密码验证

mongoDB开启密码验证

使用mongoDB开发测试一直在裸奔,今天在登陆系统时一直报错,链接上数据库才发现“我方防御塔被摧毁”,

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

万恶的黑客!

幸亏我的数据库没有什么真实数据,而且是用docker方式启动的,

思来想去,痛定思痛,原因还是在自己,偷懒了。为了避免以后仍然发生这种事情,开发也得加上用户验证配置。

下面记录自己配置用户和密码的步骤

配置流程

为mongodb增加用户名和密码分为以下几步:

1.在启动时加上--auth 配置开启验证,

docker使用以下命令:

sudo docker run -itd --name mongo_auth -p 27017:27017 mongo --auth

2.进入docker

sudo docker exec -it mongo_auth /bin/bash

如果是非docker,可直接省略此步骤

3.进入数据库shell

mongo

4.创建数据库超级管理员

执行

use admin; //切换admin库
db.createUser(
    {
        user:"root",
        pwd:"pwd",
        roles:["root"]
    }
);//创建用户

db.auth("root",'root')//验证是否设置成功,返回1位通过,返回0为失败

注意,这里的用户不是业务数据库的用户,这是一个管理用户的用户。业务数据库用户是绑定在数据库中的,下面会创建。创建与用户相关操作都在 admin数据库下进行,所以先要切换至admin

5.创建业务数据库管理员

db.createUser({
  user:"user01",
  pwd:"iamhappy",
  roles:[
    {role:"readWrite",db:"testdb1"},
    {role:"readWrite",db:"testdb2"},
  ]
});
db.auth("root",'root');//验证是否设置成功,返回1位通过,返回0为失败
use testdb1;//切换数据库
show users;;//显示该库下所有用户

权限含义分别如下

  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、4. clusterMonitor、hostManage;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root
  7. 内部角色:__system
  1. Read:允许用户读取指定数据库
  2. readWrite:允许用户读写指定数据库
  3. dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  4. userAdmin:允许用户向system.users集合写入,可以在指定数据库里创建、删除和管理用户
  5. clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  6. readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  7. readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  8. userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  9. dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  10. root:只在admin数据库中可用。超级账号,超级权限

可以配置一个用户对多个数据库的权限,一般配置一个就行

6.重启mongodb

sudo docker restart mongo; //docker
非docker 直接停止,然后 执行 mongo --auth

mongoose链接配置

# mongodb 为协议
# username: 连接数据库的用户
# password: 该用户的密码
# localhost: 本地的地址(因为这是本地环境)非本地环境使用数据库所在域名或者地址
# 27017: mongodb的端口号(这个一般是默认值,也可以进行修改)
# dbname: 数据库的名字
var db = 'mongodb://username:password@localhost:27017/dbname'

参考链接

https://segmentfault.com/a/1190000015603831#item-0-9

https://www.jianshu.com/p/a6b82fd5bbc1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章