MongoDB在Windows10上的安装和用户验证

一,下载可安装文件,按下面链接的步骤安装,然后启动MongoDB,启动服务。

http://www.runoob.com/mongodb/mongodb-window-install.html

mongod命令用来启动MongoDB

mongod.cfg是启动MongoDB的配置文件,其中“dbPath”是文件的存储文件夹,必须指定;systemLog下的“path”是日志文件的保存路径,如果不配置,则不保存日志。

mongo进入命令行

服务的名字可能和下文不同,我用的是MongoDB Server

二,设置验证配置

参考如下链接

https://segmentfault.com/a/1190000015603831

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

https://segmentfault.com/a/1190000008636760

1,添加用户

在MongoDB正在运行的情况下,启动mongodb shell

mongo

mongo默认进入test库中,切换到admin库(如果没有admin库,可以新建)

use admin

添加用户admin用户和root用户:

db.createUser(
  {
    user: "admin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

db.createUser(
  {
    user: "root",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)

创建一个 业务数据库管理员用户:

use spider;
db.createUser(
  {
    user: "spider",
    pwd: "spider007",
    roles: [ { role: "dbOwner", db: "spider" } ]
  }
)

在3.6版本中 dbAdmin不能查询collection,所以直接改成dbOwner

解决 Error: couldn’t add user: No role named userAdminAnyDatabase@ 异常问题:

https://blog.csdn.net/kwame211/article/details/96316498

查看创建的用户:

show users;
或
db.system.users.find();

 

角色信息请参考文章结尾附录:

MongoDB数据库角色

 

2,启动验证

更改配置文件

在配置文件中将 #security: 中的#去掉,并在其下一行,空两个空格,加上authorization: enabled,如下

security:
  authorization: enabled

重启mongodb数据库 

net stop MongoDB Server

net start MongoDB Server

或者通过Windows服务里启动

验证权限是否生效

mongo

> show dbs
2016-07-19T17:32:37.258+0800 E QUERY    [thread1] Error: listDatabases failed:{
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
    "code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:760:19
shellHelper@src/mongo/shell/utils.js:650:15
@(shellhelp2):1:1

此时说明权限起作用

验证admin用户:

> use admin
switched to db admin
> db.auth('admin','abc123')
1
> show dbs
admin  0.000GB
local  0.000GB

验证普通用户: 

> use spider
switched to db spider
> show dbs
2018-12-15T17:06:50.896+0800 E QUERY    [js] Error: listDatabases failed:{
        "ok" : 0,
        "errmsg" : "command listDatabases requires authentication",
        "code" : 13,
        "codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:67:1
shellHelper.show@src/mongo/shell/utils.js:876:19
shellHelper@src/mongo/shell/utils.js:766:15
@(shellhelp2):1:1
> db.auth("spider", "spider007")
1
> show dbs
spider  0.000GB

 

附录:

MongoDB数据库角色

  1. 内建的角色
  • 数据库用户角色:read、readWrite;
  • 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  • 备份恢复角色:backup、restore;
  • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  • 超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
  • 内部角色:__system

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值