一、拉取MongoDB镜像
docker pull mongo
默认会拉取最新的镜像
二、创建mongoDB容器
docker run -dit --name mymongo -p 27017:27017 mongo:latest --auth
参数说明:
-i:表示运行容器
-t:表示容器启动后会进入其命令行
-d:守护式方式创建容器在后台运行
--name:容器名称
-p 27017:27017:端口映射(宿主机端口:容器端口),mongoDB默认是27017端口
--auth:访问mongo需要鉴权(账号密码访问),这个参数要放在最后面,否则会报错
三、进入容器并访问mongoDB
docker exec -it mymongo /bin/mongo
进入容器并执行mongo命令,进入mongo shell命令行
四、创建mongoDB用户(连续操作第三步不要退出来)
-
先了解一下mongo用户权限
read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除、查看统计或访问system.profile
dbOwner:允许用户在指定数据库中执行任意操作,增、删、改、查等
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin库中可用,赋予用户所有数据库的读权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库userAdmin权限
dbAdminAnyDatabase: 只在admin数据库中可用,赋予用户所有数据库dbAdmin权限
root:只在admin数据库中可用。超级管理员用户,超级权限 -
创建用户(这里我们创建一个用户,然后给他超级管理员权限)
1、切换到admin库
use admin
2、创建账号
db.createUser({"user":"test","pwd":"123456","roles":["root"]})
参数说明:
"user":"test":这个键值对表示用户名为test
"pwd":"123456":这个键值对表示密码为123456
"roles":["root"]:这个键值对是授权超级管理员权限,参考上面的mongo用户权限
3、验证用户
db.auth("test","123456")
4、使用账号密码登陆数据库
先退出mongoShell命令行(exit)
我是直接退出重新进入了容器,因为进入容器的姿势不对,直接在进入容器的时候执行了mongo,直接进入了mongoShell命令行,所以我得退出容器,在重新进入容器,再通过账号密码进入mongoShell命令行
5、验证权限
show dbs 相当于mysql里面的show databases
如果能看到默认的数据库(admin、confing、local)说明没有问题
如果不是用账号密码进入的mongoShell执行show dbs看不到数据库的,因为没有权限
五、mongoDB常用命令
-
显示所有数据库
show dbs
-
创建数据库(不存在)/切换数据库(存在)
use mydb
-
创建集合
db.createCollection("mycol")
-
查看已有集合
show collections
show tables
-
删除集合
db.mycol.drop()
-
删除数据库(删除当前使用的数据库)
db.dropDatabase()
-
集合中插入数据
db.mycol.insertOne({"key":"val"}) 插入一个文档
db.mycol.insertMany([{"key1":"val"},{"key2":"val2"}]) 插入多个文档
-
更新集合
db.mycol.update({"key1":"val"},{$set:{"key1":"val11111"}})更新操作符说明
$set {$set:{field:value}} 指定一个键并更新值,若键不存在则创建 $unset {$unset:{field:1}} 删除一个键 $inc {$inc:{field:value}} 对数值类型进行增减 $push {$push:{field:value_arry}} 将数值追加到数组中,若数组不存在则会进行初始化 $pushAll {$pushAll:{field:value_arry}} 追加多个值到一个数组字段内 $pull {$pull:{field:_value}} 从数组中删除指定的元素 $addToSet {$addToSet:{field:value}} 添加元素到数组中,具有排重功能 $pop {$pop:{field:1}} 删除数组的第一个或者最后一个元素
-
删除文档
删除一个文档
db.mycol.deleteOne({"key":"val"})
删除多个文档
db.mycol.deleteMany({"title":"test"})
删除所有哦文档
db.mycol.deleteMany({}) -
查询文档
查询所有数据
db.mycol.find()
单条件查询
db.mycol.find({"key1":"val3"})
and条件查询
db.mycol.find({"title":"test","key1":"val5"})
or条件查询
db.mycol.find({$or:[{"key1":"val3"},{"key1":"val5"}]})
欢迎来到testingpai.com!
注册 关于