• mongodb的用户认证&&备份迁移


    准备阶段 :

     

    查询数据库:  show dbs

    进入数据库: use MYDB

    查询数据库中表: show tables

    在mongo中创建新的用户 并赋予相应权限:

    db.createUser({

    user:<name_string>,                   #字符串

    pwd:<password_string>, #字符串

    roles:[{role:<role_name>,db:<db_name>}]     #数组+对象

    })

    user文档字段介绍:
        user字段,为新用户的名字;
        pwd字段,用户的密码;
        cusomData字段,为任意内容,例如可以为用户全名介绍;
        roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色;
        在roles字段,可以指定内置角色和用户定义的角色。

    Built-In Roles(内置角色):

    1. 数据库用户角色:read、readWrite;

    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;

    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;

    4. 备份恢复角色:backup、restore;

    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

    6. 超级用户角色:root 
      // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)

    7. 内部角色:__system

    举例:给admin添加一个root用户

    use admin

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

    mongodb.conf文件中加入 auth=true

    验证用户

    use admin

    db.auth("admin","123456")

    删除用户

    db.dropUser(<user_name>)    删除某个用户,接受字符串参数

    db.dropAllUser()             删除当前库的所有用户

    注意:  在mongo4.0版本中 配置用户认证需要在mongod.cfg中

    security:
    authorization: enabled

    重新启动服务: mongod -f "C:Program FilesMongoDBServer4.0inmongod.cfg"

    数据库迁移 :

    1. 使用mongo自带命令来进行迁移数据库,先导出集合数据再导入数据库中

      数据导出:mongoexport -d dbname -c collectionname -o filepath --type json/csv -f field

      数据导入:mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field

    2. 连接远程mongodb备份导入导出

      连接远程数据库:mongo -u username -p pwd host:post/database(数据库名)

      注:当该用户有相应权限时,可以查看collection==>查看集合命令:show collections

      备份导出:mongodump -h dbhost -d dbname -o dbdirectory

      备份恢复:mongorestore -h dbhost -d dbname dbdirectory

    3. 可视化工具迁移

      详细步骤:https://jingyan.baidu.com/article/63f236287e91c40208ab3d11.html

      1. 注意:设置用户认证后需要:先连接进入mongo -u admin -p 123456 127.0.0.1:17072/admin

       

    迁移到阿里云上:

    #mongodump的具体命令请参考mongo的帮助文档
    mongodump -h [源MongoDb地址,比如:10.10.10.10:27017] -d [需要下载的数据库名]

    mongorestore --host [上图中查得的地址] --authenticationDatabase admin -u root

    详细步骤 :https://help.aliyun.com/document_detail/26625.html

    数据导出:

    mongoexport -d dbname -c collectionname -o filepath --type json/csv - field

    -d:数据库名

    -c:集合名称

    -o : 导出数据文件的路径

    -type : 导出数据类型,默认json

    数据导出:

    mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field

    -d:数据库名

    -c:集合名称

    --file : 选择导入的文件

    -type : 文件类型,默认json

    -f : 字段,type为csv是必须设置此项

    数据备份:

    mongodump -h dbhost -d dbname -o dbdirectory

    例如 : mongodump -h 127.0.0.1:17072 -d mydb -o C:Users91178 

    -h:MongDB所在服务器地址,例如:127.0.0.1

    -d:需要备份的数据库实例

    -o:备份的数据存放目录,系统自动在转储目录下建立一个备份的数据库名称的目录,这个目录里面存放该数据库实例的备份数据

    数据库恢复:

    mongorestore -h dbhost -d dbname dbdirectory

    例如:mongorestore -h 127.0.0.1:17072 -d mydb  Users91178dncloud

    (在网上搜索到的都是 mongorestore -h dbhost -d dbname  -directoryperdb  dbdirectory)

    -h:MongoDB中的所在服务器地址

    -d:需要恢复的数据库实例

    -directoryperdb:备份数据所在位置

     

     

    数据备份恢复实例:

     

    1.首先在阿里云服务器上备份mongodb的数据(将阿里云服务器的数据库数据备份成JSON文件)

    mongodump -h 127.0.0.1 -d FbGameData -o /usr/

    2.查看备份的文件(查看备份成功的文件夹内容)

    cd /usr/FbGameData

    3.将备份文件夹打包压缩

    tar -zcvf FbGameData.tar.gz FbGameData

    4.本地SCP拉取服务器备份文件压缩包 (跨主机传输文件)

    scp root@47.92.215.62:/usr/FbGameData.tar.gz ./

    5.解压缩(省略)然后恢复数据(前提是要在本地创建同名数据库)

    mongorestore -h 127.0.0.1 -d FbGameData  ./FbGameData /

     

    排坑

    1. 在mongod.conf 中开启用户认证后, 如果不加--authenticationDatabase admin 会报认证错误

      mongodump --port=17072 -uadmin -p123456 --db=dncloud -o C:Users91178 --authenticationDatabase admin

      mongorestore --port=17072 -uadmin -p123456 -dmydb  Users91178dncloud --authenticationDatabase admin
      查看数据库占用磁盘大小: mongo admin --eval "printjson(db.runCommand({"listDatabases":1}))

    添加用户权限:

    use admin

    db.auth("username","password")

    db.createUser({

    user:"11111111"

    pwd:"2222"

    roles:[{role:"root",db:"admin"}]

    })

    show users

    任务管理器中启动mongdb

  • 相关阅读:
    CF1221D Make The Fence Great Again
    HDU.1536.S-Nim(博弈论 Nim)
    HDU.1848.Fibonacci again and again(博弈论 Nim)
    POJ.1704.Georgia and Bob(博弈论 Nim)
    洛谷.2197.nim游戏(博弈论 Nim)
    博弈论基础——巴什博弈
    SPOJ.104.Highways([模板]Matrix Tree定理 生成树计数)
    BZOJ.4289.PA2012 Tax(思路 Dijkstra)
    BZOJ.4753.[JSOI2016]最佳团体(01分数规划 树形背包DP)
    图论
  • 原文地址:https://www.cnblogs.com/yanhui1995/p/11193202.html
Copyright © 2020-2023  润新知