docker pull mongo
docker run -d --name my-mongo -p 27017:27017 mongo
docker exec -it my-mongo mongo
// 使用mongoDB 4.x版本
docker pull mongodb/mongodb-community-server:4.4.2-ubuntu2004-20230514T053842Z
docker run -d --name my-mongo -p 27017:27017 镜像id
docker exec -it my-mongo mongo
// 配置docker代理 下载镜像
root@localhost docker.service.d\]# pwd /etc/systemd/system/docker.service.d \[root@localhost docker.service.d\]# cat http-proxy.conf \[Service
Environment="HTTP_PROXY=http://192.168.xx.xx:7890"
Environment="HTTPS_PROXY=http://192.168.xx.xx:7890"
Environment="NO_PROXY=localhost,127.0.0.1"
🚪进入 Mongo Shell 后的第一步
你进入后会看到类似提示符:
bash
>
说明已经进入 Mongo Shell,现在就可以操作数据库了。
🧾 1. 查看当前数据库
js
db
默认是 test
数据库。
🗂️ 2. 查看所有数据库
js
show dbs
如果没有手动插入数据,有些数据库可能不会显示。
🧱 3. 创建 / 切换数据库
js
use mydb
🔸注意:MongoDB 会在你首次向这个库写入数据时才真正创建它。
📂 4. 创建集合(类似表)
js
db.createCollection("users")
不过你也可以直接插入文档,MongoDB 会自动创建集合:
js
db.users.insertOne({ name: "Lily", age: 24 })
插入的文档是会被插入到你当前所在的数据库中的集合 users 中
📥 5. 插入数据
插入单条文档:
js
db.users.insertOne({ name: "Nova", age: 22 })
插入多条文档:
js
db.users.insertMany([
{ name: "Qianjue", age: 25 },
{ name: "Luna", age: 30 }
])
🔍 6. 查询数据
查询全部:
js
db.users.find()
美化显示:
js
db.users.find().pretty()
查询条件:
js
db.users.find({ age: { $gt: 24 } }) // 查找 age > 24 的用户
✏️ 7. 更新数据
js
db.users.updateOne(
{ name: "Lily" },
{ $set: { age: 26 } }
)
❌ 8. 删除数据
删除一条:
js
db.users.deleteOne({ name: "Lily" })
删除多条:
js
db.users.deleteMany({ age: { $lt: 25 } })
🧾 9. 查看集合列表
js
show collections
🔐 10. 创建用户(可用于认证)
如果你还没设置好权限模式,创建用户可以这样:
js
use admin
db.createUser({
user: "myuser",
pwd: "mypassword",
roles: [ { role: "readWrite", db: "mydb" } ]
})
📌 总结:常用命令清单
操作 | 命令 |
---|---|
查看数据库 | show dbs |
切换数据库 | use dbname |
查看集合 | show collections |
插入文档 | insertOne / insertMany |
查询文档 | find() |
更新文档 | updateOne() / updateMany() |
删除文档 | deleteOne() / deleteMany() |
创建集合 | createCollection() |
创建用户 | db.createUser(...) |
🧠 你可以先练习上面这些基本操作,对 MongoDB 的"无模式""JSON文档式结构"会有个感性认识。
MongoDB 创建用户命令
✅ 命令内容
js
use admin
db.createUser({
user: "myuser",
pwd: "mypassword",
roles: [ { role: "readWrite", db: "mydb" } ]
})
📖 一行一讲解
🔹 use admin
👉 表示切换到 admin
数据库。
MongoDB 的权限系统是和数据库绑定的,用户在哪个数据库下创建,就属于哪个数据库。
- 一般来说:
- 管理员账户建议放在
admin
数据库下(相当于超级管理员作用域) - 普通读写用户可以放在业务数据库下(如:
mydb
)
- 管理员账户建议放在
💡 举一反三:
js
use mydb // 如果你只想为 mydb 创建一个普通读写用户
🔹 db.createUser({...})
这是创建用户的标准命令,格式如下:
js
db.createUser({
user: "<用户名>",
pwd: "<密码>",
roles: [ ... ]
})
✨ 参数详解:
参数名 | 含义 |
---|---|
user |
用户名 |
pwd |
密码 |
roles |
用户权限列表,支持多个权限组合 |
🔸 user: "myuser"
👉 创建的用户名是 "myuser"
。你登录 MongoDB 时就可以这样连接:
bash
mongosh -u myuser -p mypassword --authenticationDatabase admin
🔸 pwd: "mypassword"
👉 用户密码,配合用户名一起登录用。
⚠️ 不建议用过于简单的密码,生产环境要强密码 + TLS 连接。
🔸 roles: [ { role: "readWrite", db: "mydb" } ]
👉 这个数组定义了 用户的权限角色,每个角色有两个部分:
字段 | 说明 |
---|---|
role |
角色名,比如 readWrite 、read 、dbAdmin 、root 等 |
db |
授权作用的数据库 |
这行的含义是:
给这个用户 myuser
,在 mydb
数据库上分配 readWrite
权限。
📚 常用权限角色参考表
角色名 | 权限说明 |
---|---|
read |
只读(查询数据) |
readWrite |
读写(增删改查) |
dbAdmin |
管理数据库结构(如建表、索引) |
userAdmin |
管理用户(创建、修改权限) |
root |
超级权限(所有数据库全部权限) |
🎯 举一反三案例
🌟 创建只读用户:
js
use mydb
db.createUser({
user: "reader",
pwd: "123456",
roles: [ { role: "read", db: "mydb" } ]
})
🌟 创建多权限用户:
js
use admin
db.createUser({
user: "adminuser",
pwd: "adminpass",
roles: [
{ role: "readWrite", db: "mydb" },
{ role: "dbAdmin", db: "mydb" },
{ role: "userAdmin", db: "admin" }
]
})
🌟 创建超级用户:
js
use admin
db.createUser({
user: "root",
pwd: "123456",
roles: [ { role: "root", db: "admin" } ]
})
🧠 总结理解图:
一个用户(user)
└── 拥有多个角色(roles)
└── 每个角色作用于某个数据库(db)
└── 给定的权限类型(role: read / write / admin)
MongoDB 是基于 数据库级别的权限模型,不像 MySQL 那样跨库授权,权限是"在哪个库就对哪个库有效"。