博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows MongoDB安装配置
阅读量:6547 次
发布时间:2019-06-24

本文共 6528 字,大约阅读时间需要 21 分钟。

   1、下载

    官网:

    由于是在window下,所以我下载的是mongodb-win32-x86_64-2008plus-ssl-3.2.7-signed.msi,和普通安装软件exe一样,一直点下一步,中途改改安装路径。

 

  2、配置

    安装之后,还需要配置,比如数据库的数据安装路径,日志路径等等。

    MongoDB将数据目录存储在 db 目录下。但是这个数据目录不会主动创建,需要我们在安装完成后需要手动创建。

    为日志文件,数据文件和配置文件创建目录

    配置文件目录:D:\MongoData\config\mongod.cfg

    日志文件目录:D:\MongoData\dblog\

    数据文件目录:D:\MongoData\db\

    

    接着再配置mongod.cfg

    

systemLog:    destination: file    path: D:\MongoData\dblog\mongod.log    logAppend: truestorage:    journal:        enabled: true    dbPath: D:\MongoData\dbnet:    port: 27017#security:    #authorization: enabled

 

  3、安装服务

    配置好上面后,在到cmd中执行(使用管理员权限):

    D:\Program Files\MongoDB\Server\3.2\bin>mongod.exe --config "D:\MongoData\config\mongod.cfg" --install

    

     安装成功

 

    

    

    启动mongodb服务

      net start MongoDB

      

      

 

      服务成功启动

      可以看看日志文件:后来去查看日志文件: D:\MongoData\dblog\mongod.log

     

    

   关闭mongodb服务

    net stop MongoDB

    

    

   删除Windows服务

    两种方式:

     1、 D:\Program Files\MongoDB\Server\3.2\bin> mongod --config D:\MongoData\config\mongod.cfg --remove

      

 

     2、在系统管理员窗口输入:sc delete MongoDB 

      

 

   4、用户权限设置

      1、MongoDB是没有默认管理员账号,所以要先添加管理员账号,再开启权限认证。

    2、切换到admin数据库,添加的账号才是管理员账号。

    3、用户只能在用户所在数据库登录,包括管理员账号。

    4、管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以。

    

   创建管理员账号

    在admin数据库中,添加一个用户并赋予userAdminAnyDatabase角色。 

    例如,下面是在admin数据库中创建一个名为myUserAdmin用户。

    注意:你创建用户的这个数据库(这里就是admin数据库)是用户认证数据库, 尽管用户是在这个数据库认证,而用户又有其他数据库的角色;即,用户认证数据库不限制用户权限。

    在window管理员下启动cmd,并且连接上mongodb, 

    连接命令:D:\Program Files\MongoDB\Server\3.2\bin>mongo.exe

    创建用户命令:

use admindb.createUser(  {    user: "myUserAdmin",    pwd: "mypass123",    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  })#结果Successfully added user: {    "user" : "admin",    "roles" : [        {            "role" : "userAdminAnyDatabase",            "db" : "admin"        }    ]}

    

    查看用户

    show users

    

    db.system.users.find()

    

 

   5、开启权限验证

    配置文件:D:\MongoData\config\mongod.cfg

    注意:要开启配置文件的authorization的权限

 
systemLog:    destination: file    path: D:\MongoData\dblog\mongod.log    logAppend: truestorage:    journal:        enabled: true    dbPath: D:\MongoData\dbnet:    port: 27017security:    authorization: enabled

 

    接着就是重启mongod实例。说明了就是重启mongodb服务。

 

  6、验证权限是否生效  

    

 

  7、添加普通用户

    1、一旦经过认证的用户管理员,可以使用db.createUser()去创建额外的用户,你可以分配mongodb内置的角色或用户自定义的角色给用户。

       2、这个myUserAdmin用户仅仅只有特权去管理用户和角色,myUserAdmin,如果你试图执行其他任何操作,例如在test数据库中的foo集合中去读数据,mongodb将返回错误。

    3、你创建用户的数据库(这里就是test数据库)是该用户认证数据库。尽管用户认证是这个数据库,用户依然可以有其他数据库的角色。即用户认证数据库不限制用户权限。

    

    7.1、创建读写用户

MongoDB shell version: 3.2.7connecting to: test> use adminswitched to db admin> db.auth('myUserAdmin', 'mypass123')1> db.createUser(... ... ...  {... ... ...     user: "ott1",... ... ...    pwd: "ott1",... ... ...     roles: [... ... ...       { role: "readWrite", db: "OTT_DB" },... ... ...    ]... ... ...  }... ... ...  )Successfully added user: {        "user" : "ott1",        "roles" : [                {                        "role" : "readWrite",                        "db" : "OTT_DB"                }        ]}> use OTT_DBswitched to db OTT_DB> db.auth("ott1","ott1")Error: Authentication failed.0

    从上面发现在use admin状态下创建数据库OTT_DB的用户ott1,在授权时失败

    先删除ott1

    删除命令:db.dropUser("ott1")

> use adminswitched to db admin> db.auth("myUserAdmin","mypass123")1> use OTT_DBswitched to db OTT_DB> db.auth("ott1","ott1")1> db.dropUser("ott1")true>

 

    因此在创建数据库OTT_DB用户之前,必须进入到OTT_DB状态

    

use OTT_DBswitched to db OTT_DB> db.createUser(... ... ...  {... ... ...     user: "ott_test",... ... ...    pwd: "ott_test",... ... ...     roles: [... ... ...       { role: "readWrite", db: "OTT_DB" },... ... ...    ]... ... ...  }... ... ...  )Successfully added user: {        "user" : "ott_test",        "roles" : [                {                        "role" : "readWrite",                        "db" : "OTT_DB"                }        ]}>

 

    验证用户权限

    关闭mongo.exe,重新打开mongo.exe

    

    关闭mongo.exe,重新打开mongo.exe

    

    可以看出,进入OTT_DB数据库,要查看test集合里面的数据,必须先授权,输入用户名和密码,否则无法查询

    如果要删除ott_test ,必须首先首先:use admin 然后 db.auth('myUserAdmin', 'mypass123'),再use OTT_DB, 最后执行 db.dropUser("ott_test") 才能成功删除数据库 OTT_DB对应的用户

    7.2、创建只读用户

    给OTT_DB数据库创建只读用户ott2,注意:必须首先进入admin数据库,然后授权,然后进入OTT_DB数据库,然后才能创建用户

    

MongoDB shell version: 3.2.7connecting to: test> use adminswitched to db admin> db.auth('myUserAdmin', 'mypass123')1> use OTT_DBswitched to db OTT_DB> db.createUser(... ... ...  {... ... ...     user: "ott2",... ... ...    pwd: "ott2",... ... ...     roles: [... ... ...       { role: "read", db: "OTT_DB" },... ... ...    ]... ... ...  }... ... ...  )Successfully added user: {        "user" : "ott2",        "roles" : [                {                        "role" : "read",                        "db" : "OTT_DB"                }        ]}>

 

     关闭mongo.exe,重新打开mongo.exe,验证ott2用户是否是只读用户

    

MongoDB shell version: 3.2.7connecting to: test> use OTT_DBswitched to db OTT_DB> db.auth("ott2","ott2")1> db.test.find(){ "_id" : ObjectId("59f837e28d41d3c11f04f7c8"), "name" : "mike" }{ "_id" : ObjectId("59f838bd38e747cd423fcb23"), "name" : "kite" }> db.test.insert("name":"myname")2017-10-31T17:40:54.586+0800 E QUERY    [thread1] SyntaxError: missing ) after argument list @(shell):1:21> db.test.insert({
"name":"myname"})WriteResult({ "writeError" : { "code" : 13, "errmsg" : "not authorized on OTT_DB to execute command { insert: \"test\", documents: [ { _id: ObjectId('59f8453659d24d08aaa61d31'), name: \"myname\" } ], ordered: true }" }})>

    由此可见ott是只读用户

   8、MongoDB数据库角色

    内建的角色 

    数据库用户角色: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数据库中可用。超级账号,超级权限

 

 

 

 

 

转载于:https://www.cnblogs.com/shaosks/p/6589867.html

你可能感兴趣的文章
spring cloud微服务分布式云架构--hystrix的使用
查看>>
解决Mac启动Eclipse Memory Analyzer报错问题
查看>>
自己写的进度条###
查看>>
实现批量添加20个用户,用户名为user1-50,密码为user后面跟5个随机字符
查看>>
Net命令详解
查看>>
ThreadLocal使用出现的问题
查看>>
连接池并发的实现原理
查看>>
创建Pch预编译文件
查看>>
阿里云Centos配置iptables防火墙
查看>>
UML类图几种关系的总结
查看>>
PHP面试题汇总
查看>>
LeetCode (11): Container With Most Water
查看>>
【技巧】easyUI的datagrid,如何在翻页以后仍能记录被选中的行
查看>>
经过强制类型转换以后,变量a, b的值分别为( )short a = 128; byte b = (byte) a;
查看>>
ubuntu下msmtp+mutt的安装和配置
查看>>
QLabel显示图片,图片可以自适应label的大小
查看>>
BZOJ3994:[SDOI2015]约数个数和——题解
查看>>
3、EJB3.0开发第一个无会话Bean和客户端(jboss4.2.3)
查看>>
git fetch & pull详解
查看>>
boost_1.63.0编译VS2013
查看>>