zoukankan      html  css  js  c++  java
  • Windows MongoDB安装配置

       1、下载

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

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

      2、配置

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

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

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

        配置文件目录:D:MongoDataconfigmongod.cfg

        日志文件目录:D:MongoDatadblog

        数据文件目录:D:MongoDatadb

        

        接着再配置mongod.cfg

        

    systemLog:
        destination: file
        path: D:MongoDatadblogmongod.log
        logAppend: true
    storage:
        journal:
            enabled: true
        dbPath: D:MongoDatadb
    net:
        port: 27017
    
    #security:
        #authorization: enabled

      3、安装服务

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

        D:Program FilesMongoDBServer3.2in>mongod.exe --config "D:MongoDataconfigmongod.cfg" --install

        

         安装成功

        

        

        启动mongodb服务

          net start MongoDB

          

          

          服务成功启动

          可以看看日志文件:后来去查看日志文件: D:MongoDatadblogmongod.log
         

        

       关闭mongodb服务

        net stop MongoDB

        

        

       删除Windows服务

        两种方式:

         1、 D:Program FilesMongoDBServer3.2in> mongod --config D:MongoDataconfigmongod.cfg --remove

          

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

          

       4、用户权限设置

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

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

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

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

        

       创建管理员账号

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

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

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

        在window管理员下启动cmd,并且连接上mongodb, 
        连接命令:D:Program FilesMongoDBServer3.2in>mongo.exe

        创建用户命令:

    use admin
    db.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:MongoDataconfigmongod.cfg

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

    
    
    systemLog:
        destination: file
        path: D:MongoDatadblogmongod.log
        logAppend: true
    storage:
        journal:
            enabled: true
        dbPath: D:MongoDatadb
    net:
        port: 27017
    
    security:
        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.7
    connecting to: test
    > use admin
    switched 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_DB
    switched to db OTT_DB
    > db.auth("ott1","ott1")
    Error: Authentication failed.
    0

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

        先删除ott1

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

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

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

        

    use OTT_DB
    switched 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.7
    connecting to: test
    > use admin
    switched to db admin
    > db.auth('myUserAdmin', 'mypass123')
    1
    > use OTT_DB
    switched 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.7
    connecting to: test
    > use OTT_DB
    switched 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数据库中可用。超级账号,超级权限

     

  • 相关阅读:
    长沙雅礼中学集训-------------------day1(内含day0)
    17年 5月份刷题版
    manecher_回文串;
    后缀数组
    湖南集训
    好像又好久没更了;计算课noip模拟赛;
    dp的练习题;
    oj1638
    【noi】植物大战僵尸
    #日常吐槽
  • 原文地址:https://www.cnblogs.com/shaosks/p/6589867.html
Copyright © 2011-2022 走看看