mongodb开启权限验证、超级管理员、用户权限管理

-

mongodb账户权限配置

1、创建超级管理员权限用户

use admin
db.createUser({
    user:'admin',//用户名
    pwd:'123456',//密码
    roles:[{ role:'root',db:'admin'}]//root 代表超級管理员权限 admin代表给admin数据库加的超级管理员
})

db.createUser({
    user:'admin',
    pwd:'123456',
    roles:[{ role:'root',db:'admin'}]
})
 补充说明
// mongodb数据库角色
1、数据库用户角色: read、readWrite
2、数据库管理角色:dbAdmin、dbOwner、userAdmin
3、集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
4、备份恢复角色:backup、restore
5、所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6、超级用户角色:root
7、内部角色:__system
8、内建的角色

角色说明:
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
2、修改吗,mongodb数据库配置文件 注意空格 不能用tab
// 路径: D:mongodbinmongod.cfg
security:  
    authorization: enabled

补充:mongod.cfg 配置前 备份一下  

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# Where and how to store data.
storage:
  dbPath: D:mongodbdata #配置数据库文件存储目录
  journal:
    enabled: true
#  engine:
#  wiredTiger:

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path:  D:mongodblogmongod.log  #配置日志目录

# network interfaces
net:
  port: 27017   #配置端口 默认端口为27017
  bindIp: 127.0.0.1  #绑定ip地址


#processManagement:

security:  #配置安全相关的东西
    authorization: enabled  #默认没有这个代码 打开注释就开启了权限认证

#operationProfiling:

#replication:

#sharding:

## Enterprise-Only Options:

#auditLog:

#snmp:
3、重新启动mongodb
win + r 
services.msc

不过权限设置没有生效,尝试了不少,这个5版本的mongodb版本过于新,暂时没有把权限设置成功,不过学到了几个命令

mongo 启动命令

net start MongoDB

mongo停止命令

net stop MongoDB

指定mongo配置文件

mongod --config "D:mongodbinmongod.cfg" --install

以权限认证的方式启动服务

mongod --auth --port 27017 --dbpath D:mongodbdata 

或者

mongod --auth

继续往下写

4、用超管账号连接数据库

// 第四步:用超级管理员账户连接数据表
mongo admin -u 用户名 -p 密码
mongo 127.0.0.1:27017/test -u user -p password //远程连接方式


mongo admin -u admin -p 123456   //用admin账户去连接数据库

5、给其它数据库创建一个账号(用户)

db.createUser({
    user:'ityingadmin',//创建一个itying
    pwd:'123456',
    roles:[{ role:'dbOwner',db:'itying'}]
})

6、删除一个账号(用户)

db.dropUser('ityingadmin')

7、给某个账户授权

//给admin账户授权
use admin 
db.auth('admin','123456')

//给ityingadmin账号授权 前提是先创建有这个账户

use admin 
db.auth('ityingadmin','123456')

8、用ityingadmin账号连接admin数据库

mongo admin -u ityingadmin -p 123456

9、给itying数据库创建一个账号

通过超管账号连接数据库,切换到itying数据库,创建账号

use admin
//在itying数据库下创建一个 账户
use itying
db.createUser({
    user:'ityingadmin',
    pwd:'123456',
    roles:[{ role:'dbOwner',db:'itying'}]
})

//然后就可以用 此账号连接itying数据库
mongo itying -u ityingadmin -p 123456

总结一下权限操作命令

查看当前数据库用户

show users

删除当前数据库某一个用户

db.dropUser('ityingadmin')

修改用户密码:

db.updateUser("ityingadmin",{"pwd":"123456"})

密码认证,权限验证:验证之后就可以用这个账号访问数据库

db.auth('ityingadmin','123456')

nodejs连接数据库时需要配置的账户密码

const url = 'mongodb://admin:123456@localhost:27017';

-

原文地址:https://www.cnblogs.com/fqh123/p/15192146.html