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

原文地址:https://www.cnblogs.com/yanhui1995/p/11193202.html