🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
>pip install pymongo ## Windows环境 >使用360软件管家安装`微软常用运行库集合` - 解压到d盘 - 新建data与log文件夹 - 启动 >D:\db\mongodb\bin\mongod.exe --dbpath D:\db\mongodb\data --logpath=D:\db\mongodb\log\mongodb.log --logappend ## Linux环境 centos - 下载 >curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz - 解压 >tar -zxvf mongodb-linux-x86_64-4.0.4.tgz - 移动并重命名 >mv mongodb-linux-x86_64-4.0.4 /usr/local/mongodb - 新建data和logs两个目录,用来存放数据和日志 ``` cd /usr/local/mongodb/ mkdir data mkdir logs ``` - 新建vi mongodb.conf ``` dbpath = /usr/local/mongodb/data/ #日志文件存放目录 logpath = /usr/local/mongodb/logs/mongodb.log #远程连接 bind_ip=0.0.0.0 #端口 port = 27017 #以守护线程的方式启用,即在后台运行 fork = true #日志输出方式,使用追加的方式写日志 logappend = true #PID File 的完整路径,如果没有设置,则没有PID文件 pidfilepath = /usr/local/mongodb/mongo.pid #关闭http接口,默认关闭27018端口访问 #nohttpinterface = true #声明这是一个集群的分片,默认端口是27018 #shardsvr = true #设置每个数据库将被保存在一个单独的目录 #directoryperdb = true #开启认证 auth = true #设开启简单的rest API,置后打开28017网页端口 #rest = true ``` - 放行27017端口 >firewall-cmd --zone=public --add-port=27017/tcp --permanent >firewall-cmd --reload ### MongoDB命令行 >/usr/local/mongodb/bin/mongo ``` # 查看版本 db.version() # 关闭服务需要进入到admin数据库 use admin db.shutdownServer() # 查看所有数据库 show dbs ``` ### MongoDB用户权限控制 - 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 ``` Read:允许用户读取指定数据库 readWrite:允许用户读写指定数据库 dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 root:只在admin数据库中可用。超级账号,超级权限 ``` - 新建一个授权账号用来管理用户 >use admin >db.createUser( { user: "dba", pwd: "dba", roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } ) - 验证:需要开启auth参数。 ``` #验证,因为在admin下面添加的帐号,所以要到admin下面验证。 use admin db.auth('dba','dba') #创建数据库及读写帐号 use mydb db.createUser( { user: "lss", pwd: "lss", roles: [ { role: "readWrite", db: "mydb" } ] } ) #查看所有用户 use admin db.system.users.find().pretty() #统计用户数 db.system.users.find().count() # 删除用户 db.system.users.remove({user:"root"}) ``` ## 流程 ``` # 新建超级管理员用户(root) use admin db.createUser({user:'root', pwd:'jzl@admin', roles:[{ role: "root", db: "admin" }]}) db.auth('root','jzl@admin') # 关闭数据 db.shutdownServer() exit # 打开config文件,开启auth = true 权限认证 # 启动服务器 /usr/local/mongodb/bin/mongod -config mongodb.conf # 使用管理员账号登录 /usr/local/mongodb/bin/mongo use admin db.auth('root','jzl@admin') # 管理员是没有权限访问普通数据库,需要我们建一个普通用户来访问普通数据库 use ota720u db.createUser({user:"ota",pwd:"jzl@2018",roles:[{role:"readWrite",db:"ota720u"}]}) db.auth('ota','jzl@2018') exit ``` ## mongodb 备份 还原 导出 导入 - mongodump备份数据库 1. 常用命令格 >mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径 如果没有用户,可以去掉-u和-p。 如果导出本机的数据库,可以去掉-h。 如果是默认端口,可以去掉--port。 如果想导出所有数据库,可以去掉-d。 2. 导出所有数据库 >mongodump -h 127.0.0.1 -o /home/zhangy/mongodb/ 3. 导出指定数据库 >mongodump -h 192.168.1.108 -d tank -o /home/zhangy/mongodb/ - mongorestore还原数据库 1. 常用命令格式 >mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径 `--drop的意思是,先删除所有的记录,然后恢复。` 2. 恢复所有数据库到mongodb中 >mongorestore /home/zhangy/mongodb/ #这里的路径是所有库的备份路径 3. 还原指定的数据库 >mongorestore -d tank /home/zhangy/mongodb/tank/ #tank这个数据库的备份路径 >mongorestore -d tank_new /home/zhangy/mongodb/tank/ #将tank还原到tank_new数据库中 `这二个命令,可以实现数据库的备份与还原,文件格式是json和bson的。无法指写到表备份或者还原。` - mongoexport导出表,或者表中部分字段 1. 常用命令格式 >mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -q 条件导出 --csv -o 文件名 ` -f 导出指字段,以字号分割,-f name,email,age导出name,email,age这三个字段 ` `-q 可以根查询条件导出,-q '{ "uid" : "100" }' 导出uid为100的数据 ` `--csv 表示导出的文件格式为csv的,这个比较有用,因为大部分的关系型数据库都是支持csv,在这里有共同点` 2. 导出整张表 >mongoexport -d tank -c users -o /home/zhangy/mongodb/tank/users.dat 3. 导出表中部分字段 >mongoexport -d tank -c users --csv -f uid,name,sex -o tank/users.csv 4. 根据条件导出数据 >mongoexport -d tank -c users -q '{uid:{$gt:1}}' -o tank/users.json - mongoimport导入表,或者表中部分字段 1. 常用命令格式 - 还原整表导出的非csv文件 >mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名 `重点说一下--upsert,其他参数上面的命令已有提到,--upsert 插入或者更新现有数据` - 还原部分字段的导出文件 >mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsertFields 字段 --drop 文件名 - 还原导出的csv文件 >mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --type 类型 --headerline --upsert --drop 文件名 2. 还原导出的表数据 >mongoimport -d tank -c users --upsert tank/users.dat 3. 部分字段的表数据导入 >mongoimport -d tank -c users --upsertFields uid,name,sex tank/users.dat 4. 还原csv文件 >mongoimport -d tank -c users --type csv --headerline --file tank/users.csv