1、创建文件夹结构

├── conf
│   ├── mongo.conf
├── data
└── log
    └── mongo.log
#赋权限
chmod 777 mongo.log 
#mongo.conf文件内容
port=27017
dbpath=/data/db/
logpath=/data/log/mongo.log
logappend=true
maxConns=10000
auth=true
oplogSize=2048

2、docker启动命令

docker run --name mongodb --restart always \
--privileged -p 27777:27017 \
-v /software/mongodb/data:/data/db \
-v /software/mongodb/log:/data/log \
-v /software/mongodb/conf:/data/configdb \
-v /software/mongodb/conf/mongo.conf:/data/configdb/mongod.conf \
-d mongo --config /data/configdb/mongod.conf --bind_ip_all  
# -v 指定配置文件启动
# --bind_ip_all 允许所以IP访问
# ----restart=always  Docker服务重启容器也启动
# --privileged  拥有真正的root权限

3、mongo设置

docker exec -it mongodb bash
mongo
> use admin  #切换数据库,如果没有的话就是创建库
> db.createUser({user:'super',pwd:'super', roles:[{role:'root', db:'admin'}]})  #创建用户
> db.auth("super","super")  #切换用户
> db.test.find().pretty()   #查找所有用户

 4、创建数据库以及用户

#创建用户
db.createUser( {user: "root",pwd: "123456",roles: [ { role: "dbAdmin", db: "luckysheetdb" } ]})

 

    #登陆mongo
    mongo
    #切换数据库,不存在创建
    use test
    #创建用户
    db.createUser(
        {
            user: "test",
            pwd: "12345",
            roles: [ { role: "readWrite", db: "test" } ]
          }
    )
    #创建表
    collection db.createCollection('test')
    #插入记录
    db.runoob.insert({"name":"test"})
    #查看表
    show collecions
    #查看记录
    db.col.find({"name":"test"}).pretty()

 

 常用命令

> show dbs  #显示数据库列表 
> show collections  #显示当前数据库中的集合(类似关系数据库中的表)
> show users  #显示用户
> use <db name>  #切换当前数据库,如果数据库不存在则创建数据库。 
> db.help()  #显示数据库操作命令,里面有很多的命令 
> db.foo.help()  #显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令 
> db.foo.find()  #对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) 
> db.foo.find( { a : 1 } )  #对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1

> db.dropDatabase()  #删除当前使用数据库
> db.cloneDatabase("127.0.0.1")   #将指定机器上的数据库的数据克隆到当前数据库
> db.copyDatabase("mydb", "temp", "127.0.0.1")  #将本机的mydb的数据复制到temp数据库中
> db.repairDatabase()  #修复当前数据库> db.getName()  #查看当前使用的数据库,也可以直接用db
> db.stats()  #显示当前db状态
> db.version()  #当前db版本> db.getMongo()  #查看当前db的链接机器地址
> db.serverStatus()  #查看数据库服务器的状态

角色

内建的角色 
数据库用户角色:read、readWrite; 
数据库管理角色:dbAdmin、dbOwner、userAdmin; 
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 
备份恢复角色:backup、restore; 
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 
超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) 
内部角色:__system 
角色说明: 
Read:允许用户读取指定数据库 
readWrite:允许用户读写指定数据库 
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile 
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 
root:只在admin数据库中可用。超级账号,超级权限