MongoDB我自己遇到的所有坑

在阿里云上部署mongodb
  1. yum.repo默认用的是mirrors.aliyun.com
    如果直接yum -y install mongo的话,会直接安装version 2.6 我们需要创建一个单独的repo文件 vim /etc/yum.repos.d/mongodb-org-xx.xx.repo
    [mongodb-org] name=MongoDB Repository baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/6Server/mongodb-org/xx.xx/x86_64/ gpgcheck=0 enabled=1
  2. 清除yum的缓存
    yum clean or yum clean all
    安装mongodb yum install -y mongodb-org

  3. [main] Failed global initialization: BadValue: Invalid or no user locale set. Please ensure LANG and/or LC* environment variables are set correctly.
    解决办法: vim /etc/profile
    export LC
    ALL=C
    或者直接在终端里输入 export LC_ALL=C

  4. 先对之前的数据进行备份,备份以及还原的指令
    1) mongodump 整个库的导出
    2) mongorestore 整个库的导入
    3) mongoexport 单个集合的导出
    4) mongoimport 单个集合的导入

  5. mongodb创建跟删除用户

use admin  
db.createUser(  
  {
    user: "myUserAdmin",
    pwd: "abc123",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
  }
)

或者

use test  
db.createUser(  
  {
    user: "myTester",
    pwd: "xyz123",
    roles: [ { role: "readWrite", db: "test" },
             { role: "read", db: "reporting" } ]
  }
)

重启mongodb,然后通过指令来连接
mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
mongo --port 27017
use admin db.auth("myUserAdmin", "abc123" )

往某一个集合中插入数据
db.foo.insert( { x: 1, y: 1 } )

6.在创建用户的时候,权限很重要
分类 | 角色 | 简要说明
---------------------------|--------------------------|-------------------------
数据库用户角色(DB User Roles)|read readWrite | 为某个数据库创建一个用户, 分配该数据库的读写权力
数据库管理员角色(DB Admin Roles)|dbAdmin dbOwner userAdmin | 拥有创建数据库, 和创建用户的权力
集群管理角色(Culster Administration Roles)|clusterAdmin clusterManager clusterMonitor hostManager | 管理员组, 针对整个系统进行管理
备份还原角色(Backup and Restoration Roles) | backup restore | 备份数据库, 还原数据库
所有数据库角色(All-Database Roles) | readAnyDatabase readWriteAnyDatabase userAdminAnyDatabase dbAdminAnyDatabase| 拥有对admin操作的权限
Superuser Roles(超级管理员)| root | dbOwner userAdmin userAdminAnyDatabase这几个角色角色提供了任何数据任何用户的任何权限的能力,拥有这个角色的用户可以在任何数据库上定义它们自己的权限

7.mongodb 4.0 authentication failed
网上一大师关于authentication failed的文章,推荐看看:https://www.crifan.com/mongodbaddmultipleiprestrictionrestartmongodfailjobformongodservicefailed/
当我们创建好db user之后,遇到authentication的问题,就有可能是以下问题:
1) emacs /etc/mongodb.conf 把 bindip=127.0.0.1 这一行注释掉或者是修改成 bindip=0.0.0.0 2) 防火墙,开放端口 27017
3) CSDN上一篇文章:https://blog.csdn.net/qq_26896281/article/details/81206492

8.mongodb的常用指令 http://www.cnblogs.com/TankMa/archive/2011/06/08/2074947.html

show dbs;  
use testDB;  
show users;  
show collections;  
db.help();  
db.foo.help();  
db.foo.find();  
db.foo.find({a : 1});  
db.cloneDatabase("xxx.xxx.xxx.xxx");  
db.copyDatabase("","","");  
db.repairDatabase();  
db.getName();  
db.stats();  
db.version();  
db.getMongo();  
db.dropDatabase();  
db.createCollection("coName",{size:20, capped:5, max:100});  
db.getCollection("asdf");  
db.getCollectionNames();  
db.printCollectionStats();  
db.addUser("asdf");  
db.addUser("asdf","asdf",true);  
db.auth("asdf","asdfasdf");  
db.removeUser("asdf");  

9.mongoDB的教程:http://www.runoob.com/mongodb/mongodb-tutorial.html