MongoDB语句 # mongodb # mongo
启动服务
cat docker_start_Train-MongoDB.sh
#!/bin/bash
# author:WinJayX
# date:2020-05-07
# Maintainer WinJayX <WinJayX@Gmail.com>
# func:MongoDB Docker Container
# !!! -p 参数说明 -p :前的为宿主机的端口,后的为容器业务所需的端口!!!
# -e MONGO_INITDB_ROOT_USERNAME=settlement \
# -e MONGO_INITDB_ROOT_PASSWORD=vJAxnz4laVMuK_CfdF0 \
# mongo:4.2.23 --auth
docker rm -f Train-Mongo
docker run -d --name Train-Mongo \
-u root \
-h MongoDB \
-p 37017:27017 \
--restart always \
--volume `pwd`/MongoData:/data/db \
--volume /etc/localtime:/etc/localtime:ro \
mongo:4.2.23
./docker_start_Train-MongoDB.sh
Error response from daemon: No such container: Train-Mongo
aed4efe205b87d0366e7740a177c7d37b463883b491c483a65b6b24b11ab27d8
进入容器
- 指定admin数据库
- MongoDB V6版本以后的进入命令是
docker exec -it Train-Mongo mongosh admin
docker exec -it Train-Mongo mongo admin
docker exec -it Mongo-Dev mongo admin
创建用户
db.createUser({user:"admin", pwd:"admin", roles:[{role:"userAdminAnyDatabase", db:"admin"}]});
db.createUser({user:"admin", pwd:"admin", roles:[{role:"root", db:"admin"}]});
db.createUser({ user: "root" , pwd: "root", roles: ["root"]})
db.createUser({user:"admin", pwd:"admin", roles:[{role:"root", db:"admin"}]});
db.createUser({ user:'admin',pwd:'admin',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
用户示例
分类 | role(角色) | 简要说明 |
---|---|---|
数据库用户角色(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 这几个角色角色提供了任何数据任何用户的任何权限的能力,拥有这个角色的用户可以在任何数据库上定义它们自己的权限 |
db.createUser({user:"settlement", pwd:"vJAxnz4laVMuK_CfdF0", roles:[{role:"userAdminAnyDatabase", db:"admin"}]});
db.createUser({user:"test1", pwd:"test", roles:[{role:"readWrite", db:"test_admin"}]});
Successfully added user: {
"user" : "test1",
"roles" : [
{
"role" : "readWrite",
"db" : "test_admin"
}
]
}
db.createUser({user:"db_evaluate", pwd:"db_evaluate_hyhl", roles:[{role:"readWrite", db:"db_evaluate"}]});
Use
db.createUser({user:"db_evaluate", pwd:"db_evaluate_hyhl", roles:[{role:"root", db:"db_evaluate"}]});
// 运行报错
E QUERY [js] uncaught exception: Error: couldn't add user: No role named root@db_evaluate
db.createUser({user:"db_evaluate", pwd:"db_evaluate_hyhl", roles:["root"]});
Successfully added user: { "user" : "db_evaluate", "roles" : [ "root" ] }
验证权限:
查看所有用户
>
> db.system.users.find().pretty()
{
"_id" : "admin.settlement",
"userId" : UUID("b48978c9-e5ed-43ad-9ce5-aa80d4c765af"),
"user" : "settlement",
"db" : "admin",
"credentials" : {
"SCRAM-SHA-1" : {
"iterationCount" : 10000,
"salt" : "2fOLYwk4TRpKAg9BqkzraA==",
"storedKey" : "tylBJAKKxbpb+sfr5VnWnR+5DoI=",
"serverKey" : "4VHfRB9KvgVPNsGW9AxtiL5RNFs="
},
"SCRAM-SHA-256" : {
"iterationCount" : 15000,
"salt" : "SMsJdXsMkWW6RQyPHFjn5Ax+I9nkzW+cdd7KQw==",
"storedKey" : "FWlbQJoMGQLtldYZfd1LCVBXMqYqXRbq/RWi3b/3cVE=",
"serverKey" : "4EX77k7qHS4boN3uzdcEKaAIcV+SKTuWnL5g/SdMIt0="
}
},
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
{
"_id" : "admin.admin",
"userId" : UUID("f96d541f-9f99-4fba-bd48-d05d8f3d9d36"),
"user" : "admin",
"db" : "admin",
"credentials" : {
"SCRAM-SHA-1" : {
"iterationCount" : 10000,
"salt" : "6RVDKlksfNK5DTM/E9v5Ww==",
"storedKey" : "2NfW+BnRFmBNEioq1GqQOFk2LMc=",
"serverKey" : "TE8w6QhFAXrWuQMHPvWmheiNq/A="
},
"SCRAM-SHA-256" : {
"iterationCount" : 15000,
"salt" : "kACnxi/VJk0ugFU62YDDGe7IYSglx58/JGY5kw==",
"storedKey" : "r6Wh2+TsyCOviLIfuIRXceJsz20DDQTMqTdUT/JQpKs=",
"serverKey" : "Xe+ccfJyOvlubOx3sIrf+aBDg2N2vpwMqDpEYesNVyc="
}
},
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
{
"_id" : "test_admin.test",
"userId" : UUID("15e297fc-9a8b-481c-acf2-75e7b9f53af7"),
"user" : "test",
"db" : "test_admin",
"credentials" : {
"SCRAM-SHA-1" : {
"iterationCount" : 10000,
"salt" : "w1lxE/pWevBI2tlYc2FbQg==",
"storedKey" : "o85OWf9XyWHP9qvoynbyrdcFquY=",
"serverKey" : "9Yx/FJDtoIIiOoJGniOMnZOunHI="
},
"SCRAM-SHA-256" : {
"iterationCount" : 15000,
"salt" : "dD35EHNgt19yUI19ySQVGPNBc/IAgeu766c7/w==",
"storedKey" : "SM+fNJLbtp3dDPYHwTjede0ki7ReVXucQHlQvrhPvvo=",
"serverKey" : "mJq8tJwDjMpHV6F0dGop3XhfzmE0Mj+QwHiG9PvQ/aA="
}
},
"roles" : [
{
"role" : "readWrite",
"db" : "test_admin"
}
]
}
{
"_id" : "admin.test1",
"userId" : UUID("ccc796f3-29f4-4513-a0b3-d3d775f3612a"),
"user" : "test1",
"db" : "admin",
"credentials" : {
"SCRAM-SHA-1" : {
"iterationCount" : 10000,
"salt" : "OiPWsU6XPR+o7LUW87wufA==",
"storedKey" : "N8cWsnWmBzxNsxYjTqJTthJCU1w=",
"serverKey" : "9feX9Qnr7wJEurICUL4g7I30e8U="
},
"SCRAM-SHA-256" : {
"iterationCount" : 15000,
"salt" : "SXqZX7vcM6xyuH7zw6dXDRriovmf+cET2B0wpQ==",
"storedKey" : "2L9pcfYmpHHs84M02w3Dmm3hAs4Q6n8k9MDVYPEXh/E=",
"serverKey" : "37vo1wfGIsFb0neZK4cQ1g7paz40txVKraDTL2v5Y8k="
}
},
"roles" : [
{
"role" : "readWrite",
"db" : "test_admin"
}
]
}
{
"_id" : "admin.db_evaluate",
"userId" : UUID("cb7943cf-7670-4c53-afec-b45135a6ef94"),
"user" : "db_evaluate",
"db" : "admin",
"credentials" : {
"SCRAM-SHA-1" : {
"iterationCount" : 10000,
"salt" : "EkmDlo7zqKnufjPZNvzgrA==",
"storedKey" : "W1sC//fGavbQ4D0SV1P6oYfO7IM=",
"serverKey" : "3LUZ2Qb4LvwWxm5DbgeuTn7o14c="
},
"SCRAM-SHA-256" : {
"iterationCount" : 15000,
"salt" : "xwy3AbhHpF7noP5MIiyJHekL9eFtojQOJwpeuw==",
"storedKey" : "P4pOuS30z1JbjbiMJjfKhgOCwyDgLzjqYnsYOmT+4rI=",
"serverKey" : "6kHG4iY+zA34/rR7ZpMvmXFKg3ASqYizMgK/E9abvtk="
}
},
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
删除用户
> db.dropUser('db_evaluate')
true
# db_evaluate 用户名
db.createUser({
user: "litsoft",
pwd: "litsoft2023",
roles: [ { role: "root", db: "admin" }]
})
db.createUser({ user: "litsoft" , pwd: "litsoft2023", roles: ["root"]})
use lit_db_test
show dbs
db.db_evaluate.insertOne({"name":"联和利泰"})
db.dropDatabase()
删除数据库
use lit_db_test
db.dropDatabase()
use lit_db_test
show dbs
db.lit_db_test.insertOne({"name":"联和利泰"})
db.dropDatabase()
use lit_db_test
show dbs
db.lit_db_test.insertOne({"name":"联和利泰"})
评论区