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:\mongodb\bin\mongod.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:\mongodb\data #配置数据库文件存储目录 journal: enabled: true # engine: # wiredTiger: # where to write logging data. systemLog: destination: file logAppend: true path: D:\mongodb\log\mongod.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:\mongodb\bin\mongod.cfg" --install
以权限认证的方式启动服务
mongod --auth --port 27017 --dbpath D:\mongodb\data
或者
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';
-