设为首页 收藏本站
查看: 959|回复: 0

[经验分享] mongodb安装配置以及其他基础操作

[复制链接]

尚未签到

发表于 2018-10-24 13:42:44 | 显示全部楼层 |阅读模式
  最近公司有个项目要用mongodb,之前没搞过,今天临时磨刀上阵,花了半天时间研究,中间有遇到几个坑写出来分享给大家。
  tar -zxf mongodb-linux-x86_64-v3.6.3.tgz
  cp -pr mongodb-linux-x86_64-v3.6.3 /usr/local/mongodb
  mkdir -p /data/mongodb/logs
  touch /data/mongodb/logs/mongodb.log
  vi /data/mongodb/bin/mongodb.conf
  dbpath=/data/mongodb/data
  logpath=/data/mongodb/logs/mongodb.log
  port=27017
  fork=true
  auth=true
  logappend=true
  nojournal=true
  nohttpinterface=true
  /usr/local/mongodb/bin/mongod --bind_ip 172.31.31.63 -f /usr/local/mongodb/conf/mongodb.conf
  echo "export PATH=/usr/local/mongodb/bin:$PATH" >> /etc/profile
  source /etc/profile
  连接到mongodb:
  mongo 172.31.31.63:27017
  show dbs        //查看数据库
  use admin        //切换到admin库,若admin库不存在则会创建admin
  show users        //查看用户
  db.createUser({user:"admin",pwd:"123456",roles:["root"]});    //创建超级管理员用户
  db.createUser({user:"USRADM",pwd:"123456",roles:[ "userAdminAnyDatabase"]});  //创建用户管理员账户
  db.changeUserPassword('admin','147258');//修改密码
  db.dropUser('admin')    //删除用户
  db.auth("admin","147258");    //admin登录认证
  db.auth("USRADM","123456");     //USRADM登录认证
  #############################################################################################
  内建角色
  1、数据库用户角色
  read:允许用户读取指定数据库
  readWrite:允许用户读写指定数据库
  2、数据库管理员角色
  dbAdmin:允许用户进行索引创建、删除,查看统计或访问system.profile,但没有角色和用户管理的权限
  userAdmin:提供了在当前数据库中创建和修改角色和用户的能力
  dbOwner: 提供对数据库执行任何管理操作的能力。这个角色组合了readWrite、dbAdmin和userAdmin角色授予的特权
  3、集群管理角色
  clusterAdmin : 提供最强大的集群管理访问。组合clusterManager、clusterMonitor和hostManager角色的能力。还提供了dropDatabase操作
  clusterManager : 在集群上提供管理和监视操作。可以访问配置和本地数据库,这些数据库分别用于分片和复制
  clusterMonitor : 提供对监控工具的只读访问,例如MongoDB云管理器和Ops管理器监控代理
  hostManager : 提供监视和管理服务器的能力。
  4、备份恢复角色
  backup : 提供备份数据所需的能力,使用MongoDB云管理器备份代理、Ops管理器备份代理或使用mongodump
  restore : 提供使用mongorestore恢复数据所需的能力
  5、所有数据库角色
  readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限
  6、超级用户角色
  root:提供对readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin、restore和backup的所有资源的访问
  7、内部角色
  __system : 提供对数据库中任何对象的任何操作的特权
  #############################################################################################
  //创建用户BackupUser,并赋予备份恢复角色
  db.createUser({user: "BackupUser",pwd: "123456",roles: [
  { role: 'backup', db: 'admin' },
  { role: 'restore', db: 'admin' }
  ]});
  use students    //创建数据库
  db.createUser({user: "user1",pwd: "user123456",roles: [ { role: "readWrite", db: "students" } ]});  //创建students库读写权限用户
  db.auth("user1","user123456");
  db.clas.insert({"name":"wang"});    //向clas集合(表)插入3条数据
  db.clas.insert({"name":"zhang"});
  db.clas.insert({"name":"li"});
  db.clas.remove({});    //删除clas集合里面所有数据记录
  db.clas.find();            //查询clas集合里面所有数据记录
  db.clas.drop();           //删除clas集合(表)
  show collections;      //查看集合(表)
  db.dropDatabase();  //删除数据库
  db.currentOp();                 //获得当前所有in progressing的操作进程
  db.killOp(1616361578);    //杀掉正在执行进程,1616361578为opid
  db.test.findOne() ;            //查询集合test中的一条记录
  db.test.find({"optime" : {$lte:new Date(2017,11,1)}})     //按日期查询,格式一
  db.test.find({"optime":{$gte:ISODate("2017-01-01T00:00:00Z")}, "time":{$lte:ISODate("2017-01-02T00:00:00Z")}})  //按日期查询,格式二
  show roles;               //查看当前库下的角色权限
  db.getRole("readWrite",{showPrivileges: true});   //查看指定角色readWrite下的详细权限
  //创建角色testRole并赋予remove权限同时并继承read角色
  db.createRole({role:"testRole",privileges:[
  {resource:{db:"test",collection:""},actions:["remove"]}
  ],
  roles:[
  { role: "read", db: "test"}
  ]
  })
  导出students库的数据:
  mongodump -h 172.31.31.63:27017 --authenticationDatabase admin -d students -u BackupUser -p -o /root/test/
  -h 主机IP:端口
  -d  要备份的库
  -u  具有backup角色的用户
  -p  备份用户的密码
  -o  备份目录路径
  --authenticationDatabase 备份用户BackupUser所属的数据库
  导入students库的数据:
  mongorestore -h 172.31.31.63:27017 --authenticationDatabase admin -d students -u BackupUser -p --directoryperdb /root/test/students
  -h  主机IP:端口
  -d  恢复的目标库
  -u  具有restore角色的用户
  -p  恢复用户的密码
  --directoryperdb  恢复目录路径
  --authenticationDatabase 恢复用户BackupUser所属的数据库
  需要注意的坑:
  1.认证问题,比如上面我有一个admin用户,只有use admin切换到admin库下面才能认证成功。
  2.比如我上面已经创建了一个USRADM用户并赋予了相应的角色,当前这个角色它具有赋予用户所有数据库的userAdmin权限。现在我想为students库创建一个用户且分配置userAdmin角色。此时若我在admin库下面执行则会失败,必须切换到students库下面操作才能成功。
  3.备份恢复角色的用户只能在admin库下创建,创建完后可以执行备份恢复其他所有库。
  !!!切记执行任何库的操作时都必须先切换到对应的库下面


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-625996-1-1.html 上篇帖子: logstash记录mongodb日志 下篇帖子: mongodb3备份脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表