主流的NoSQL数据库–MongoDB权限设置的详解

本文阅读对象:

MongoDB权限设置不熟悉者

MongoDB开发者

其他对MongoDB感兴趣的开发者

对技术感兴趣的吃瓜群众

MongoDB是一个基于分布式文件存储的数据库,为目前主流的NoSQL数据库,已被应用到许多高性能的大型系统中。如果之前从未接触MongoDB,可以访问MongoDB官网快速了解其主要特性及应用场景,如果英文水平确实有限,可以阅读MongoDB百度百科进行了解,不过个人建议直接看英文资料,因为你迟早要去啃英文的技术资料。

MongoDB的安装

此文示例的环境基于CentOS 7.3 64位,MongoDB版本为3.2.4。

在服务器上,以超级用户权限执行yum安装,命令如下:

[username@xxx]# su [username] -- username 为你登陆服务器的用户名[username@xxx]# yum -y install mongodb-server  mongodb如果安装成功,你会得到如下类似的结果:Installed:mongodb-server.x86_64 0:2.6.12-4.el7Complete!

找到MongoDB的安装目录

从上面的结果可以看出,mongo被安装在目前/usr/bin下,进入该目录。

[username@xxx]# find -name mongo/etc/sysconfig/mongod/usr/bin/mongod

添加配置mongodb.conf。将配置文件、数据及日志文件放在目录/usr/local/mongodb下,同时在/usr/local/mongodb目录下创建数据及日子目录:data及logs

[username@xxx]# cd /usr/local[username@xxx]# mkdir mongodb[username@xxx]# cd mongodb[username@xxx]# mkdir data[username@xxx]# mkdir logs[username@xxx]# vi mongodb.conf在打开的文件中添加以下内容,然后保存:dbpath = /usr/local/mongodb/datalogpath = /usr/local/mongodb/logs/mongod.logport = 27017fork = truenohttpinterface = true

启动mongo服务

[username@xxx]# /usr/bin/mongod --config /usr/local/mongodb/mongodb.confabout to fork child process, waiting until server is ready for connections.forked process: 9516child process started successfully, parent exiting

连接MongoDB

至此MongoDB已经安装并启动,并且在服务器上能够以客户端的形式连接。

[username@xxx]# mongo 127.0.0.1:27017MongoDB shell version: 2.6.12connecting to: 127.0.0.1:27017/testWelcome to the MongoDB shell.For interactive help, type "help".For more comprehensive documentation, seehttp://docs.mongodb.org/Questions? Try the support group        http://groups.google.com/group/mongodb-user

MongoDB权限设置

创建一个root用户,并赋予超级管理员权限(root),超级管理员可以管理MongoDB下的所有库以及权限、备份及集群等操作。 注意在下文代码块区域内,粗体部分为MongoDB shell的命令,斜体部分为执行shell命令之后的结果。

use adminswitched to db admindb.createUser({user:"root", pwd: "123456", roles: ["root"]})Successfully added user: { "user" : "root", "roles" : [ "root" ] }

为admin库创建一个admin用户,并赋予管理员权限。

百度虚拟主播 百度虚拟主播

百度智能云平台的一站式、灵活化的虚拟主播直播解决方案

百度虚拟主播 36 查看详情 百度虚拟主播

use adminswitched to db admindb.createUser({user:"admin", pwd:"admin", roles:[{role:"userAdminAnyDatabase", db:"admin"}]})Successfully added user: {"user" : "admin", "roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"}]}

新建一个库biz,给该库添加一个用户demo,密码demo,并赋予读写及管理员权限。

use bizswitched to db bizdb.createUser({user:"demo", pwd:"demo", roles:["readWrite", "dbAdmin"]})Successfully added user: { "user" : "demo", "roles" : [ "readWrite", "dbAdmin" ] }

认证创建的用户,此步骤非常重要。认证完成之后,退出shell。

db.auth('demo', 'demo')1 # 1 - 表示认证成功,0 - 表示失败exitbye

开启验证,重启MongoDB服务。

修改配置文件/usr/local/mongodb/mongodb.conf,添加以下内容,然后保存。
auth=true

杀死,并重启服务

// 查看mongo进程信息[username@xxx]# ps -def|grep mongoroot      9516     1  0 15:08 ?        00:00:30 /usr/bin/mongod --config mongodb.confroot      9759  9614  0 16:55 pts/0    00:00:00 grep --color=auto mongo// 杀死进程[username@xxx]# kill -4 9516// 启动MongoDB[username@xxx]# /usr/bin/mongod --config /usr/local/mongodb/mongodb.confabout to fork child process, waiting until server is ready for connections.forked process: 9783child process started successfully, parent exiting

验证权限设置成功

尝试匿名连接biz数据库,连接之后,执行命令show collections,将会提示验证失败信息not authorized for query on biz.system.namespaces。相应命令如下:

[username@xxx]# /usr/bin/mongo 127.0.0.1:27017/bizMongoDB shell version: 2.6.12connecting to: 127.0.0.1:27017/bizshow collections2017-04-15T17:04:20.662+0800 error: { "$err" : "not authorized for query on biz.system.namespaces", "code" : 13 } at src/mongo/shell/query.js:131

使用添加的用户与密码连接biz库,并执行show collections,同时创建集合users,并插入一条测试数据,发现可以得到正确的结果。

{ "_id" : ObjectId("58f1e4aff754011ea2e23238"), "name" : "aa" }

[username@xxx]# /usr/bin/mongo 127.0.0.1:27017/biz -u demo -p demoMongoDB shell version: 2.6.12connecting to: 127.0.0.1:27017/bizshow collectionsdb.users.insert({name:"aa"})WriteResult({ "nInserted" : 1 })db.users.find()

权限设置成功!

总结

在MongoDB的权限设置过程中,添加用户之后,一定要执行相应的用户验证,否则该用户的权限无效生效。本文仅涉及几个简单的权限,更多的内建权限可以参考官方文档。在配置过程中如果遇到任何问题,可以留言给我进行讨论与交流。

【相关推荐】

1. 免费mysql在线视频教程

2. MySQL最新手册教程

3. 数据库设计那些事

以上就是主流的NoSQL数据库–MongoDB权限设置的详解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/413124.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
数组的长度怎么获取java
上一篇 2025年11月7日 00:03:59
华为Pura80怎么样_华为Pura80好不好
下一篇 2025年11月7日 00:04:07

相关推荐

  • Spring Boot集成MongoDB Atlas:正确配置与故障排除

    本教程详细指导如何在Spring Boot应用中正确配置与连接MongoDB Atlas集群。我们将重点讲解如何获取并使用正确的Atlas连接URI,安全地处理用户认证信息,以及准确指定目标数据库。通过实例代码和常见错误排查,帮助开发者避免连接失败,确保应用与MongoDB Atlas的顺畅集成。 …

    2026年9月22日
    600
  • Linux如何使用ACL设置精细权限

    Linux中ACL可实现更细粒度的文件权限控制,通过setfacl和getfacl命令设置和查看权限,需安装acl包并在支持ACL的文件系统上使用,权限掩码(mask)限制实际生效权限,默认ACL可实现继承,ACL优先级高于传统组权限但不覆盖文件所有者权限。 Linux 使用 ACL 可以更细致地控…

    2026年9月12日
    000
  • Linux如何检查用户的权限是否配置错误

    Linux如何检查用户的权限是否配置错误Linux如何检查用户的权限是否配置错误Linux如何检查用户的权限是否配置错误Linux如何检查用户的权限是否配置错误

    权限配置错误可能导致用户权限过高或过低,需逐层排查文件权限、ACL、SELinux/AppArmor、用户群组、SUID/SGID及挂载选项,遵循最小权限原则并使用配置管理工具避免风险。 Linux 用户权限配置错误,意味着用户可能无法执行某些他们应该可以执行的操作,或者更糟糕的是,可以执行他们不应…

    2026年9月12日 用户投稿
    200
  • Laravel自定义用户提供者?用户提供者怎样实现?

    自定义用户提供者可集成非Eloquent模型与多种数据源,如NoSQL、API、LDAP或文件,通过实现UserProvider和Authenticatable接口,灵活处理用户检索与密码验证,解决认证问题需确保接口方法正确实现并合理配置。 自定义 Laravel 用户提供者允许你使用非 Eloqu…

    2026年9月11日
    100
  • 数据量大的App制作,数据库如何选型?

    在开发处理大量数据的应用程序时,数据库的选择至关重要。选择一个合适的数据库不仅能确保数据的存储效率和安全性,还能提升应用程序的整体性能和用户体验。以下将从几个关键方面探讨如何为数据量大的app选择合适的数据库。 首先,考虑数据量的大小。 对于数据量庞大的应用程序,首要考虑的是数据库的存储能力和扩展性…

    2026年9月7日
    000
  • 在 Spring Boot Web 应用程序中序列化枚举

    枚举类型在定义应用程序域内有限且明确的值集方面非常有效,有助于避免代码中出现无效状态。 应用场景 以下以一个Spring Boot 3.3.x 和 MongoDB 实现的笔记Web应用为例,演示枚举值的序列化和反序列化方法。 我们将定义一个Type枚举,表示待办事项的类型:事件和活动。 public…

    2026年9月7日
    000
  • 玩转mongoDB(五):mongoDB 3.0+ 查询性能分析

    为了展示mongodb的性能分析方法,我们首先创建一个包含200万个文档的集合。(在我的电脑上,插入过程大约耗时15分钟。如果您想插入更多文档,只要有耐心等待即可。) 为了演示的效果,我们先来创建一个有200万个文档的记录。(我自己的电脑耗了15分钟左右插入完成。如果你想插更多的文档也没问题,只要有…

    2026年9月7日
    200
  • MySQL如何监控数据库性能_有哪些常用监控工具?

    MySQL如何监控数据库性能_有哪些常用监控工具?MySQL如何监控数据库性能_有哪些常用监控工具?MySQL如何监控数据库性能_有哪些常用监控工具?MySQL如何监控数据库性能_有哪些常用监控工具?

    mysql性能监控需关注关键指标、使用合适工具、设置告警并注意易忽略细节。一、最关键监控指标包括连接数、qps/tps、慢查询数量、innodb读写情况、锁等待与死锁;二、常用工具包括show processlist、pmm、zabbix、prometheus+grafana、pt-query-di…

    2026年9月5日 用户投稿
    100
  • linux系统下文件的权限设置

    最近搞了一批权限最小化的问题,这里专门进行一下linux下文件权限的总结,其实非常简单。 在介绍linux下文件的情况,需要先介绍一个概念,用户、用户组。 和win一样,linux也是需要用户才能登录的。不同的是在linux中,还存在一个概念:用户组。也就是当前用户所属的属组。为什么要引入这样一个看…

    2026年9月4日
    100
  • 高效单元测试:使用Helmich/Mongomock模拟MongoDB

    我最近参与开发一个基于mongodb的项目,其中涉及大量的数据库操作。为了保证代码质量,我们需要编写全面的单元测试。然而,直接使用真实的mongodb进行单元测试带来了诸多不便:测试速度慢,需要搭建和维护测试数据库,以及测试环境的依赖性等问题。这些问题严重影响了开发效率和测试的稳定性。 为了解决这个…

    用户投稿 2026年9月4日
    200
  • 这次简单多了,最新版 MongoDB 安装

    这次简单多了,最新版 MongoDB 安装这次简单多了,最新版 MongoDB 安装这次简单多了,最新版 MongoDB 安装这次简单多了,最新版 MongoDB 安装

    在 windows 10 系统上安装 mongodb 4.0.1 版本变得更为简便,基本上一路点击“下一步”就能完成安装,不再需要繁琐的配置。 首先,访问 MongoDB 官方网站,下载 MongoDB 4.0.1 版本,网址如下: https://www.php.cn/link/9cba84644…

    2026年9月4日 用户投稿
    300
  • Laravel权限功能的实战技巧:如何实现权限的版本控制和回滚

    Laravel权限功能的实战技巧:如何实现权限的版本控制和回滚 在现代的Web应用程序中,权限管理是一个至关重要的功能。Laravel框架为我们提供了一个方便而强大的权限管理工具,可以帮助我们轻松地创建和管理用户角色和权限。 然而,在开发过程中,我们可能会遇到一些需要对权限进行版本控制和回滚的情况。…

    2026年9月2日
    000
  • Web全栈开发者如何提升技能,获得更好的就业机会?

    Web全栈开发:提升技能,拓展职业发展 如何提升Web全栈开发技能,从而获得更理想的就业机会,是许多开发者共同关注的问题。本文将探讨有效提升全栈开发能力的途径,帮助您在竞争激烈的就业市场中脱颖而出。 虽然无法提供具体的全栈学习路线图,但我们可以从编程大师的经验中汲取灵感。 (此处省略图片,但其核心思…

    2026年9月2日
    200
  • 如何在Laravel中实现基于权限的数据备份和恢复

    如何在Laravel中实现基于权限的数据备份和恢复 近年来,数据备份和恢复成为了现代软件开发中不可或缺的一部分。数据的丢失和损坏不仅会导致重大的财务损失,还可能对公司的信誉造成长期的负面影响。为了保证数据的安全和完整性,我们在Laravel框架中可以通过实现基于权限的数据备份和恢复来有效地进行数据的…

    2026年9月2日
    000
  • 如何在Laravel中实现基于权限的数据过滤和访问限制

    Laravel是一个优秀的PHP框架,它提供了强大的身份验证和授权工具,可以轻松地在应用程序中实现基于权限的数据过滤和访问限制。 本文将演示如何使用Laravel中的策略(Policy)进行基于权限的数据过滤和访问限制,并提供具体的代码示例。 创建策略类 在Laravel中,可以使用命令行快速生成策…

    2026年9月2日
    000
  • 如何在Laravel中实现权限的微服务化和接口化

    如何在Laravel中实现权限的微服务化和接口化 随着软件系统规模的扩大和业务的复杂化,权限管理变得越来越重要。在Laravel这样的流行的PHP框架中,实现权限的微服务化和接口化可以帮助我们更好地组织和管理权限,在不同的应用和模块之间实现权限的共享和复用。本文将介绍在Laravel中如何实现权限的…

    2026年9月2日
    000
  • 如何在Laravel中实现基于权限的数据导出和导入

    在Laravel项目中,实现基于权限的数据导出和导入功能是一项比较常见的需求。本文将介绍如何通过Laravel框架提供的一些扩展包和权限管理机制,来实现这个功能。 使用Laravel-Excel扩展包进行数据导出和导入 Laravel-Excel是一个非常好用的Excel导入和导出扩展包,它提供了简…

    2026年9月2日
    100
  • 如何在Laravel中实现基于权限的数据加密和解密

    如何在Laravel中实现基于权限的数据加密和解密 在现代Web应用中,保护用户数据的安全性是一项非常重要的工作。在Laravel框架中,我们可以通过权限控制来实现对敏感数据的加密和解密,以确保只有授权用户可以访问。 本篇文章将向您展示如何在Laravel中实现基于权限的数据加密和解密,并为您提供代…

    2026年9月1日
    000
  • MongoDB ObjectId类型转换报错:如何正确处理String到ObjectId的转换?

    MongoDB ObjectId类型转换错误排查与解决 在MongoDB数据库操作中,ObjectId类型常常引发转换错误。ObjectId是MongoDB文档的唯一标识符,与普通字符串不同,直接转换可能导致异常。本文针对“将字符串转换为ObjectId时报错”的问题提供解决方案。 用户反馈的错误信…

    2026年9月1日
    000
  • MongoDB ObjectId类型转换错误:字符串转ObjectId失败如何排查?

    MongoDB ObjectId转换错误排查指南 在使用MongoDB时,经常需要将字符串类型的ID转换为ObjectId类型。如果转换失败,将会影响数据库操作。本文针对字符串转ObjectId报错问题提供排查方法。 问题:将字符串转换为ObjectId时报错,错误信息未提供,但可能原因与字符串ID…

    2026年9月1日
    100

发表回复

登录后才能评论
关注微信