mongo数据库的简单使用

docker 安装 mongodb

1. docker pull mongo: 4.0   # 4.0为mongo版本

2. docker run -p 27017:27017  -v /data/mongo:/data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=password --name mongodb04 mongo:4.0

-v : /data/mongo:/data/db 挂载目录  本地目录:/data/db

-d:后台运行

-e: MONGO_INITDB_ROOT_USERNAME 添加mongodb root权限用户的用户名

-e: MONGO_INITDB_ROOT_PASSWORD 添加mongodb root权限用户的密码

-p: 镜像启用端口:镜像映射端口

--name: 为该镜像起一个别名(不可重名)

 

查询数据库:  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;

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

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

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

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

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

  6. 内部角色:__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 Files\MongoDB\Server\4.0\bin\mongod.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

     

迁移到阿里云上:

#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:\Users\91178 

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

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

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

数据库恢复:

mongorestore -h dbhost -d dbname dbdirectory

例如:mongorestore -h 127.0.0.1:17072 -d mydb  \Users\91178\dncloud\

(在网上搜索到的都是 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 /

 

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

    1. mongodump --port=17072 -uadmin -p123456 --db=dncloud -o C:\Users\91178 --authenticationDatabase admin

      mongorestore --port=17072 -uadmin -p123456 -dmydb  \Users\91178\dncloud\ --authenticationDatabase admin

posted @ 2019-11-22 10:45  路口有雾  阅读(421)  评论(0编辑  收藏  举报