q986 发表于 2018-10-24 13:42:44

mongodb安装配置以及其他基础操作

  最近公司有个项目要用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]
查看完整版本: mongodb安装配置以及其他基础操作