马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
目次
Mongosh常用下令先容
连接到MongoDB实例
根本下令
检察当前数据库
切换数据库
检察全部数据库
检察当前数据库中的聚集
CRUD操作
插入文档
查询文档
更新文档
删除文档
更换文档
索引操作
创建索引
检察索引
删除索引
聚合操作
数据库管理
创建用户
删除用户
检察当前用户
备份与恢复
导出数据库
导入数据库
系统信息
检察当前连接
检察数据库状态
检察聚集状态
示例示范
怎样开启权限验证
脚色及权限先容
内置脚色
创建数据库
备份恢复详解
备份数据库
在哪检察备份文件
恢复数据的根本步骤
其他资源
Mongosh常用下令先容
MongoDB Shell(mongosh
)是用于与MongoDB交互的下令行界面。以下是一些在mongosh
中常用的下令和操作,它们可以帮助你进行数据库管理、数据操作和查询等。
连接到MongoDB实例
运行此下令将打开一个与MongoDB实例的交互式shell。连接到特定的MongoDB实例可以利用:
- mongosh
- "mongodb
- ://localhost:27017"
复制代码 根本下令
检察当前数据库
切换数据库
检察全部数据库
检察当前数据库中的聚集
CRUD操作
插入文档
- db
- .collection.insertOne({ name: "John", age: 30 });db
- .collection.insertMany([{ name: "Jane", age: 25 }, { name: "Adam", age: 28 }]);
复制代码 查询文档
- db
- .collection.find();db
- .collection.find({ age: { $gt: 25 } });
复制代码 更新文档
- db
- .collection.updateOne( { name: "John" }, { $set: { age: 31 } });db
- .collection.updateMany( { age: { $lt: 30 } }, { $set: { valid: true } });
复制代码 删除文档
- db
- .collection.deleteOne({ name: "John" });db
- .collection.deleteMany({ age: { $lt: 25 } });
复制代码 更换文档
- db
- .collection.replaceOne( { name: "John" }, { name: "John Smith", age: 31 });
复制代码 索引操作
创建索引
- db
- .collection.createIndex({ name: 1 });
复制代码 检察索引
- db
- .collection.getIndexes();
复制代码 删除索引
- db
- .collection.dropIndex({ name: 1 });
复制代码 聚合操作
- db
- .collection.aggregate([ { $match: { age: { $gte: 25 } } }, { $group: { _id: "$age", count: { $sum: 1 } } }]);
复制代码 数据库管理
创建用户
- db
- .createUser({ user: "myUser", pwd: "myPassword", roles: [ { role: "readWrite", db
- : "myDatabase" } ]});
复制代码 删除用户
检察当前用户
备份与恢复
导出数据库
- mongodump --db
- myDatabase --out /backup/dump
复制代码 导入数据库
- mongorestore --db
- myDatabase /backup/dump/myDatabase
复制代码 系统信息
检察当前连接
检察数据库状态
检察聚集状态
示例示范
- // 切换到测试数据库use testDB;// 插入文档示例db
- .users.insertOne({ name: "Alice", age: 29 });db
- .users.insertMany([{ name: "Bob", age: 31 }, { name: "Charlie", age: 25 }]);// 查询文档示例db
- .users.find({ age: { $gte: 30 } });// 更新文档示例db
- .users.updateOne({ name: "Bob" }, { $set: { age: 32 } });// 删除文档示例db
- .users.deleteOne({ name: "Charlie" });// 创建索引示例db
- .users.createIndex({ name: 1 });// 聚合示例db
- .users.aggregate([ { $match: { age: { $gte: 25 } } }, { $group: { _id: "$age", count: { $sum: 1 } } }]);
复制代码 怎样开启权限验证
在MongoDB中添加管理员(root)账户并设置开启验证,可以按照以下步骤操作:
1. 启动MongoDB不带访问控制
起首,确保MongoDB服务正在运行,并且没有开启访问控制。如果是第一次安装或刚修改了设置文件,可能需要以无认证模式启动MongoDB。
2.连接到MongoDB Shell
打开下令行或终端,输入以下下令启动MongoDB Shell:
3.创建管理员用户
在admin数据库中创建一个具有root脚色的管理员用户:
- db
- .createUser({ user: "myRootAdmin", pwd: "securePassword123!", roles: [ { role: "root", db
- : "admin" } ]})
复制代码 请将myRootAdmin和securePassword123!更换为你想要的用户名和强暗码。
4.开启访问控制
修改MongoDB设置文件以开启访问控制。
编辑MongoDB的设置文件(mongod.conf),通常位于:
Linux: /etc/mongod.conf
Windows: C:\\Program Files\\MongoDBServer\\<version>\\mongod.cfg
在security部分添加或修改以下内容:
- security:
- authorization: enabled
复制代码 5.重启MongoDB服务以应用更改
重启下令依据你的操作系统有所不同:
Linux: sudo systemctl restart mongod
Windows: 利用服务管理器或下令行 net stop MongoDB && net start MongoDB
6. 重启MongoDB服务
重启MongoDB服务以应用更改。重启下令依据你的操作系统有所不同:
Linux: sudo systemctl restart mongod
Windows: 利用服务管理器或下令行 net stop MongoDB && net start MongoDB
7.重新登录
MongoDB服务重启后,需要利用新创建的管理员用户登录:
- mongosh
- -u myRootAdmin -p securePassword123! --authenticationDatabase admin
复制代码 脚色及权限先容
脚色定义了用户可以执行的操作和访问的资源。脚色不光可以是预定义的内置脚色,也可以是用户自定义的脚色,只要具有相应权限的用户可以创建和分配这些脚色。
内置脚色
MongoDB提供了一系列内置脚色,覆盖了从读写权限到数据库管理、用户管理以致聚集管理的各种权限。一些常见的内置脚色包括但不限于:
read: 允许读取指定命据库。
readWrite: 允许读写指定命据库。
db
Admin: 允许在指定命据库中执行管理操作,如索引管理、检察统计信息等。
userAdmin: 在指定命据库中管理用户和脚色。
clusterAdmin: 聚集级别的管理权限。
root: 超级用户脚色,拥有全部数据库和聚集的管理权限。出于安全考虑,应谨慎利用。
如果需要给MongoDB的客户端用户提供读写权限,你应该指定readWrite脚色。这个脚色允许用户在指定的数据库中执行读和写操作,包括插入、查询、更新和删除文档等。
在创建用户时,可以通过以下下令指定readWrite脚色:
- use <database_name>db
- .createUser({ user: "<username>", pwd: "<password>", roles: [{ role: "readWrite", db
- : "<database_name>" }]})
复制代码
留意,上述图片中给test数据库指定root权限会被报错。只有admin库才气赋予root脚色。
其他脚色有: db
Admin,clusterAdmin,userAdmin,userAdminAnyDatabase,readWrite
db
Admin脚色具备在指定命据库中执行大部分管理操作的权限,但不包括对用户和脚色的管理(这部分权限由userAdmin脚色提供)。具体而言,db
Admin脚色允许用户执行以下类型的管理操作:
索引管理:创建、修改和删除索引。
存储管理:如执行compact下令来整理聚集的数据存储空间。
检察统计信息:检察数据库的统计信息,如利用db
.stats()下令。
访问system.profile聚集:用于监控数据库操作的性能。
执行某些维护操作:如修复数据库或聚集。
检察和修改某些数据库级别的设置:例如,通过修改collation设置来影响聚集的排序规则。
留意,尽管db
Admin拥有广泛的数据库管理权限,但它不能直接读写数据库中的数据(除非别的分配了读写权限),也不能管理数据库用户或执行跨数据库的操作。对于跨数据库的管理操作,需要clusterAdmin脚色,而对于管理用户和脚色,则需要userAdmin或userAdminAnyDatabase脚色。
给予用户db
Admin脚色应当审慎,确保符合最小权限原则,即仅授予完成其职责所必需的最小权限集。如果需要给MongoDB的客户端用户提供读写权限,你应该指定readWrite脚色。这个脚色允许用户在指定的数据库中执行读和写操作,包括插入、查询、更新和删除文档等。
如,在创建用户时,可以通过以下下令指定最常用的readWrite脚色:
- use <database_name>db
- .createUser({ user: "<username>", pwd: "<password>", roles: [{ role: "readWrite", db
- : "<database_name>" }]})
复制代码 如果你想让用户对全部数据库都有读写权限,可以利用readWriteAnyDatabase脚色,但这通常只在admin数据库中创建,并且需要非常谨慎,因为它给予了非常广泛的权限:
- use admindb
- .createUser({ user: "<username>", pwd: "<password>", roles: [{ role: "readWriteAnyDatabase", db
- : "admin" }]})
复制代码 分配权限时应遵循最小权限原则,仅给予完成工作所必需的权限,以维护数据库的安全性。
创建数据库
在MongoDB中创建数据库并不需要专门的下令,只需通过use下令指定一个数据库名称即可。纵然该数据库尚不存在,当向它写入数据时MongoDB会自动创建它。例如,如果想创建一个名为myNewDatabase的数据库,可以这样做:
执行这行下令后,就已经“切换”到了myNewDatabase。此时,数据库实际上还没有在磁盘上创建,直到你往里面插入数据。
插入数据以真正创建数据库:为了使数据库在磁盘上物理创建,你需要向该数据库的一个聚会合插入至少一条数据。例如,创建一个名为items的聚集并插入一条记录:
- db
- .items.insertOne({ item: "Sample Item" })
复制代码 这条下令不光创建了名为items的聚集,也实质上创建了myNewDatabase数据库,因为这是你首
次在这个数据库中写入数据。
验证数据库创建:你可以通过列出全部数据库来验证新数据库是否已经创建:
记着,数据库和聚集的名称都是区分大小写的。
备份恢复详解
MongoDB数据库备份可以通过多种方式完成,其中最常用的工具是mongodump。以下是利用
mongodump备份数据库的步骤,以及怎样检察备份文件和在其他机器上利用备份文件的信息。
mongodump工具可以通过安装MongoDB数据库大概单独安装MongoDB Database Tools来获得。
访问MongoDB Database Tools下载页面: Download MongoDB Command Line Database Tools | MongoDB
安装: 按照下载页面上的指南进行安装。安装后,mongodump等工具将位于安装目次的bin文件夹下,你可能需要将该目次添加到系统的PATH情况变量中以便在下令行任何位置调用。
情况变量设置:安装后,可能需要将工具的bin目次添加到PATH情况变量,以便在下令行直接利用mongodump下令。
备份数据库
利用mongodump下令: 打开下令行工具,输入以下下令来备份整个数据库(更换<database-name>为你想要备份的数据库名称,<backup-directory>为你想要存放备份文件的目次):
- mongodump --db
- <database-name> --out <backup-directory>
复制代码 如果你想备份全部数据库,可以省略--db
参数。
利用认证和更多选项: 如果MongoDB实例启用了认证,你需要提供用户名和暗码,以及其他可能的连接选项,如端口、主机地址等。例如:
- mongodump --username <username> --password <password> --authenticationDatabase admin --host <hostname> --port <port> --db
- <database-name> --out <backup-directory>
复制代码 在哪检察备份文件
备份完成后,你可以在指定的<backup-directory>目次下看到备份文件。备份文件以 BSON 格式存储在dump/<database-name>目次下,每个聚集都有一个对应的.bson文件,以及一个包含聚集元数据的.metadata.json文件。
可以将整个备份目次(包括dump下的全部文件和子目次)拷贝到另一台机器上,并在那台机器上利用mongorestore下令来恢复数据。
恢复数据的根本步骤
以下是恢复数据的根本步骤:
将备份文件复制到目标机器:确保将整个备份目次完备地复制到目标机器上。
利用mongorestore下令: 在目标机器上,打开下令行工具,导航到备份文件所在的目次,然后运行以下下令来恢复数据(更换相应参数):
- mongorestore --db
- <database-name> <backup-directory>/dump/<database-name>
复制代码 如果你想恢复全部数据库,只需指向包含全部数据库备份的根目次即可。
留意,目标机器上需要安装MongoDB,并且版本兼容性也很重要,尽量保证mongodump和mongorestore的版本与MongoDB服务器版本相匹配或兼容,以制止潜在的恢复问题。
其他资源
MongoDB Shell Download | MongoDB
mongodb
官网下载不了, MongoDB下载、安装、设置、利用,怎样下载MongoDB数据库,MongoDB入门[通俗易懂]-腾讯云开辟者社区-腾讯云
MongoDB Shell常用根本操作下令详解_MongoDB_脚本之家
mongo 常用操作指令_mongo指令-CSDN博客
https://zhuanlan.zhihu.com/p/701825851
The MongoDB Database Tools Documentation - MongoDB Database Tools
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |