MongoDB常用命令

本文最后更新于:8 个月前

区分mongod、mongo、mongos三个概念,介绍【用户管理】(主要)、【数据库管理】、【集合管理】命令

MongoDB常用命令

一、基础概念

几个容易混淆的概念:

  • mongod,用来启动MongoDB进程,是处理MongoDB系统的主要进程,处理数据请求、管理储存、执行后台操作
  • mongo,MongoDB连接操作的shell,必须先启动MongoDB进程才能进行连接管理
  • mongos,路由服务器 ,它会根据管理员设置的“片键”将数据分摊到自己管理的mongod集群

MongoDB术语:

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引

二、用户管理

1.查看用户

1
2
3
4
5
6
show users				#查看(当前数据库下的)所有用户
db.getUsers() #查看数据库的所有用户,与show users命令作用一致

#查看所有数据库的所有用户
use admin
db.system.users.find()

2.创建用户

1
2
3
4
5
6
7
8
9
10
11
12
13
db.createUser({			#创建数据库用户
user:"username",
pwd:"userpassword",
roles:[...]
})

#在指定数据库下创建用户
use laf
db.createUser({
user:"timegogo1",
pwd:"123456",
roles:[{role:"readWrite",db:"laf"}]
})

创建用户时所在的数据库就是该用户的authentication database(身份验证的数据库)。尽管该用户是在当前数据库验证身份,但是它可以拥有其它数据库的角色(以及相应的权限)

3.删除用户

1
db.dropUser("timegogo")	 #删除数据库timegogo用户

4.修改用户

方法:db.updateUser()

修改用户时,首先必须要切换到创建该用户的数据库上。修改的内容将完全替代原有的内容

1
2
3
4
5
6
7
8
db.updateUser("timegogo",{
pwd:passwordPrompt(),
roles:[{role:"readWrite",db:"laf"},
{role:"read",db:"admin"}],
customData:{description:"专门读写laf数据库的用户"}
})
#第一个参数username,要修改的用户名
#第二个参数update:修改的内容,该内容将完全覆盖原来的内容

第二个参数update具有以下可选字段:

领域 类型 描述
customData 文献 可选的。任何任意信息。
roles 数组 可选的。授予用户的角色。对该roles数组的更新将覆盖以前的数组的值。
pwd 可选的。用户密码。该值可以是:用户密码为明文字符串,或者passwordPrompt() 提示输入用户密码。
authenticationRestrictions 数组 可选的。服务器对用户实施的身份验证限制。指定允许用户连接到服务器或服务器可以接受用户的IP地址和CIDR范围的列表 。3.6版的新功能。
mechanisms 数组 可选的。用户凭证的一种或多种特定SCRAM机制。
passwordDigestor 可选的。指示服务器还是客户端提取密码。

5.切换用户

有两种方式,第一种是在shell连接内,用db.auth('username','pwd')命令验证切换。第二种是使用新用户重新连接shell

第一种方式,使用db.auth('username','pwd')命令时,必须先切换到用户的 authentication database,才能进行验证。

image-20221128233237799

第二种方式,使用新用户重新验证连接,只能访问到roles权限范围内的数据库内容。而且连接时,必须在URI中指定authentication database

image-20221128233436929

不指定或者指定其它数据库,将无法通过验证!

image-20221128233616381

三、常用的内置roles

img

四、数据库管理

1
2
3
4
5
db			#查看当前所在的数据库
show dbs #查看所有数据库
use 数据库名 #切换到指定数据库,如果不存在则新建数据库

db.dropDatabase() #删除当前数据库

四、集合管理

集合table是数据库下一集单位

1
2
3
4
5
6
show tables			#查看(当前数据库下)所有集合

db.createCollection('temp') #新建集合
db.temp.drop() #删除集合

db.temp.find() #查看集合内容

MongoDB常用命令
http://timegogo.top/2022/11/27/后端/MongoDB常用命令/
作者
丘智聪
发布于
2022年11月27日
更新于
2023年7月16日
许可协议