zoukankan      html  css  js  c++  java
  • MongoDB启动配置等

    目录:

    .mongoDB 启动配置 

    .导出,导入,运行时备份

    .Fsync,数据修复

    .用户管理,安全认证

     

    一、启动项 mongod --help

    C:Windowssystem32>mongod --help

    1.常用配置项

    --dbpath

    指定数据库的目录,默认在window下是c:datadb

    --port

    指定服务器监听的端口号码,默认是27017

    --fork

    用守护进程的方式启动mongoDB

    --logpath

    指定日志的输出路径,默认是控制台

    --config

    指定启动项用文件的路径

    --auth

    用安全认证方式启动数据库(MongoDB默认不启用)

     

    2.利用config配置文件来启动数据库改变端口为8888

    ①建立一个mongodb.config文件

    指定数据库文件的目录和要使用的端口号

    dbpath = D:MongoDBData

    port = 8888

    ②输入mongod --config D:MongoDBmongodb.config 启用配置

    ③启动MongoDB

    Cmd中输入 mongo 127.0.0.1:8888/admin

     

    3.停止mongoDB服务

    ctrl+c 组合键可以关闭数据库

    admin数据库命令关闭数据

    二、导出,导入,运行时备份

    1.导出数据(中断其他操作)

    Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。

    导出命令选项说明:

    • -h:指明数据库宿主机的IP
    • -u:指明数据库的用户名
    • -p:指明数据库的密码
    • -d:指明数据库的名字
    • -c:指明collection的名字
    • -f:指明要导出那些列
    • -o:指明到要导出的文件名
    • -q:指明导出数据的过滤条件

     

    :

    ①把数据库mongoDBTest中的Students导出

    使用mongoexport命令进行导出数据,注意不添加hostport,默认使用的是host=127.0.0.1port=27017

    最后查看导出的路径是否有刚刚操作后的文件。

    默认是导出json,但是也可以指定导出csv文件,这个就要使用--csv参数和-f参数进行组合

    上图第一次失败的原因在于,没有指定需要导出的列,所以要使用-f来进行指定。

    2.导入数据(中断其他操作)

    Mongodb中的mongoimport工具可以把一个特定格式文件中的内容导入到指定的collection中。该工具可以导入JSON格式数据,也可以导入CSV格式数据

         导入命令选项说明:  

    • -h:指明数据库宿主机的IP
    • -u:指明数据库的用户名
    • -p:指明数据库的密码
    • -d:指明数据库的名字
    • -c:指明collection的名字
    • -f:指明要导入那些列

     例:

    ①把文档Students导入到mongoDBTest数据库

     先把mongoDBTest中的Students进行删除

     > db.Students.drop()

     导入刚刚的Students.cvs文件

    参数说明:

    --type:指明要导入的文件格式

    --headerline:指明第一行是列名,不需要导入

    --file:指明要导入的文件

    查看导入完成的结果

    3.MongoDB的备份

    用mongodump 来做MongoDB 的库或表级别的备份

    • -h:指明数据库宿主机的IP
    • -u:指明数据库的用户名
    • -p:指明数据库的密码
    • -d:指明数据库的名字
    • -c:指明collection的名字
    • -o:输出目录
    • -q:json query(json查询)

     

    例:

    备份MongoDBTest数据库 

    C:Windowssystem32>mongodump -d mongoDBTest -o D:mongoDBTest

    D:mongoDBTest是存放备份数据的目录

     

    4.MongoDB的恢复

    用mongorestore 来做MongoDB 的库或表级别的数据恢复

    • -u:指明数据库的用户名
    • -p:指明数据库的密码
    • -d:指明数据库的名字
    • -c:指明collection的名字 

    例:

    先删除MongoDBTest然后在进行恢复

    > db.dropDatabase()

    { "dropped" : "mongoDBTest", "ok" : 1 }

    恢复:

    C:Windowssystem32>mongorestore -d mongoDBTest D:mongoDBTestmongoDBTest

     

    Fsync锁和数据修复

    为什么有锁的概念呢,这个和MongoDB的是实现机理有关,在数据库和用户读写直接有一个缓冲池,当用户进行备份的时候只备份数据库中的内容,缓冲池中的内容就不进行备份了,这时锁的作用就体现了,上锁之后可以将缓冲池的数据全部先放入数据库,这样就保证了数据的完整性。 

          

    2.上锁和解锁

    注意:上锁和解锁要切换到admin数据库

      上锁

          db.runCommand({fsync:1,lock:1});

      解锁

          db.currentOp()

     

    3.数据修复

    当停电等不可逆转灾难来临的时候,由于mongodb的存储结构导致会产生垃圾数据,在数据恢复以后这垃圾数据依然存在,这是数据库提供一个自我修复的能力.使用起来很简单

             db.repairDatabase()

     

    四、用户管理和安全认证

    1.添加一个用户

    db.addUser(“名称”,密码);

    2.启用用户

    db.auth(“名称”,”密码”)

    3.安全检查 --auth

    例:

    ①创建一个属于admin数据库的用户

    > db.addUser("Li","123");

    WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead

    Successfully added user: { "user" : "Li", "roles" : [ "root" ] }

     

    ②创建一个数据库mongoDBTest的用户

    > use mongoDBTest

    switched to db mongoDBTest

    > db.addUser("LiCheng","123");

    WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead

    Successfully added user: { "user" : "LiCheng", "roles" : [ "dbOwner" ] }

     

    ③首先启用安全检查

    修改mongodb.config为如下:

    dbpath = D:MongoDBData

    auth=true                    

    启动MongoDB服务

    C:Windowssystem32>mongod --config D:MongoDBmongodb.config

     

    test用户非mongoDBTest是不能操作数据库的

    使用test用户登录,并切换到mongoDBTest数据库,查看Students文档的内容

    C:Windowssystem32>mongo 127.0.0.1:27017/test

    MongoDB shell version: 2.6.5

    connecting to: 127.0.0.1:27017/test

    > use mongoDBTest

    switched to db mongoDBTest

    > db.Students.find()

    error: { "$err" : "not authorized for query on mongoDBTest.Students", "code" : 13 }

    >

     

    ⑤切换用户(启用自己的用户才能访问

    > db.auth("LiCheng","123")

    1

    > db.Students.find()

    { "_id" : 1, "name" : "Zhao", "age" : 25, "country" : "USA", "sex" : "M" }

    { "_id" : 2, "name" : "Qian", "age" : 22, "country" : "USA", "sex" : "M" }

    { "_id" : 3, "name" : "Sun", "age" : 26, "country" : "USA", "sex" : "M" }

    { "_id" : 4, "name" : "Li", "age" : 27, "country" : "China", "sex" : "" }

    { "_id" : 5, "name" : "Zhou", "age" : 30, "country" : "China", "sex" : "" }

    { "_id" : 6, "name" : "Wu", "age" : 27, "country" : "Japan", "sex" : "" }

    { "_id" : 7, "name" : "Zheng", "age" : 27, "country" : "UK", "sex" : "" }

    { "_id" : 8, "name" : "Wang", "age" : 26, "country" : "Korea", "sex" : "" }

    { "_id" : 9, "name" : "Xu", "age" : 26, "country" : "Japan", "sex" : "" }

    >

    ⑥非admin数据库的用户不能使用数据库命令

    继续使用LiCheng用户

    > show dbs

    2016-03-28T11:47:21.698+0800 listDatabases failed:{

            "ok" : 0,

            "errmsg" : "not authorized on admin to execute command { listDatabases:1.0 }",

            "code" : 13

    } at src/mongo/shell/mongo.js:47

    >

    admin数据库中的数据经过认证为管理员用户

    切换到admin用户登录,再启用Li用户

    C:Windowssystem32>mongo 127.0.0.1:27017/admin

    MongoDB shell version: 2.6.5

    connecting to: 127.0.0.1:27017/admin

    > db.auth("Li","123")

    1

    > show dbs

    admin        0.078GB

    local        0.078GB

    mongoDBTest  0.078GB

    > 

    .用户删除操作

    db.system.users.remove({user:"LiCheng"});

  • 相关阅读:
    css优先级及匹配原理
    [BZOJ1208]宠物收养所
    [BZOJ1588]营业额统计
    [AtCoder2558]Many Moves
    [POJ3416]Crossing
    [POJ3378]Crazy Thairs
    高精度大整数模板
    py3实现维吉尼亚加解密
    Codeforces 617E: XOR and Favorite Number(莫队算法)
    hdu 1695: GCD 【莫比乌斯反演】
  • 原文地址:https://www.cnblogs.com/dcz2015/p/5328727.html
Copyright © 2011-2022 走看看