MongoDB学习之权限设置详解


MongoDB数据库是一个基于分布式文件存储的数据库,为目前主流的NoSQL数据库,已被应用到许多高性能的大型系统中。如果之前从未接触MongoDB,可以访问 MongoDB官网 快速了解其主要特性及应用场景。

MongoDB的安装

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

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

[[email protected]]# su [username] -- username 为你登陆服务器的用户名[[email protected]]# yum -y install mongodb-server  mongodb

如果安装成功,你会得到如下类似的结果:

Installed:mongodb-server.x86_64 0:2.6.12-4.el7Complete!

2. 找到MongoDB的安装目录

[[email protected]]# find -name mongo

/etc/sysconfig/mongod

/usr/bin/mongod

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

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

[[email protected]]# cd /usr/local[[email protected]]# mkdir mongodb[[email protected]]# cd mongodb[[email protected]]# mkdir data[[email protected]]# mkdir logs[[email protected]]# vi mongodb.conf

在打开的文件中添加以下内容,然后保存:

dbpath = /usr/local/mongodb/datalogpath = /usr/local/mongodb/logs/mongod.logport = 27017fork = truenohttpinterface = true

4. 启动mongo服务

[[email protected]]# /usr/bin/mongod --config /usr/local/mongodb/mongodb.conf

about to fork child process, waiting until server is ready for connections.

forked process: 9516

child process started successfully, parent exiting

5. 连接MongoDB

[[email protected]]# mongo 127.0.0.1:27017

MongoDB shell version: 2.6.12

connecting to: 127.0.0.1:27017/test

Welcome to the MongoDB shell.

For interactive help, type "help".

For more comprehensive documentation, see

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

MongoDB权限设置

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

use admin

switched to db admin

db.createUser({user:"root", pwd: "123456", roles: ["root"]})

Successfully added user: { "user" : "root", "roles" : [ "root" ] }

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

use admin

switched to db admin

db.createUser({user:"admin", pwd:"admin", roles:

[{role:"userAdminAnyDatabase", db:"admin"}]})

Successfully added user: {

"user" : "admin", "roles" : [

{

"role" : "userAdminAnyDatabase",

"db" : "admin"

}

]}

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

use biz

switched to db biz

db.createUser({user:"demo", pwd:"demo", roles:["readWrite", "dbAdmin"]})

Successfully added user: { "user" : "demo", "roles" : [ "readWrite", "dbAdmin" ] }

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

db.auth(’demo’, ’demo’)

1 # 1 - 表示认证成功,0 - 表示失败

exit

bye

开启验证,重启MongoDB服务。

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

auth=true

2. 杀死,并重启服务

// 查看mongo进程信息

[[email protected]]# ps -def|grep mongo

root 9516 1 0 15:08 ? 00:00:30 /usr/bin/mongod --config mongodb.conf

root 9759 9614 0 16:55 pts/0 00:00:00 grep --color=auto mongo

// 杀死进程

[[email protected]]# kill -4 9516

// 启动MongoDB

[[email protected]]# /usr/bin/mongod --config /usr/local/mongodb/mongodb.conf

about to fork child process, waiting until server is ready for connections.

forked process: 9783

child process started successfully, parent exiting

验证权限设置成功

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

[[email protected]]# /usr/bin/mongo 127.0.0.1:27017/biz

MongoDB shell version: 2.6.12

connecting to: 127.0.0.1:27017/biz

show collections

2017-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

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

[[email protected]]# /usr/bin/mongo 127.0.0.1:27017/biz -u demo -p demo

MongoDB shell version: 2.6.12

connecting to: 127.0.0.1:27017/biz

show collections

db.users.insert({name:"aa"})

WriteResult({ "nInserted" : 1 })

db.users.find()

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

3. 权限设置成功!

总结

在MongoDB的权限设置过程中,添加用户之后,一定要执行相应的用户验证,否则该用户的权限无效生效。

来源:简书

时间: 2024-08-23 23:42:02

MongoDB学习之权限设置详解的相关文章

mongodb 用户 权限 设置 详解

原文地址:http://blog.51yip.com/nosql/1575.html 我知道的关系型数据库都是有权限控制的,什么用户能访问什么库,什么表,什么用户可以插入,更新,而有的用户只有读取权限. 例如:mysql安装配置好后,有一个自带的mysql数据库,里面有一张user表,用来存放用户,以及用户权限,而mongodb这个最像关系型的数据库,有没有这样的表呢. 一,掌握权限,理解下面4条基本上就差不多 1,mongodb是没有默认管理员账号,所以要先添加管理员账号,在开启权限认证. 2

J2EE学习篇之--JDBC详解

今天我们来说一下关于JDBC的相关知识,关于JDBC我想大家都不陌生了,而且我记得早就开始使用它了,记得那是大二的时候做课程设计,但是那时候是为了完成任务,所以遇到问题就google,那时候也没有时间去整理,所以这次就来详细说一下关于JDBC的知识 摘要: JDBC(Java Data Base Connectivity,java数据库连接),由一些接口和类构成的API. J2SE的一部分,由java.sql,javax.sql包组成. 应用程序.JDBC API.数据库驱动及数据库之间的关系

Linux学习总结之LVM2详解

大纲: 简介 版本 LVM基本术语 LVM模块 具体操作 对添加的硬盘进行分区( fdisk /dev/[hs]d[a-z] ) 对创建的分区创建物理卷(pvcreate) 给逻辑卷创建逻辑容器(卷组) 在卷组创建大小不同的逻辑卷(lvcreate) 给已存在的卷组扩大容量 实现在线扩大LVM容量 实现缩减LVM容量(不支持在线缩减) 减小卷组容量 利用给LVM创建快照,并完成备份并还原 简介: LVM是Logical Volume Manager(逻辑卷管理器)的简写,又译为逻辑卷宗管理器.逻

(转) shiro权限框架详解06-shiro与web项目整合(上)

http://blog.csdn.net/facekbook/article/details/54947730 shiro和web项目整合,实现类似真实项目的应用 本文中使用的项目架构是springMVC+mybatis,所以我们是基于搭建好的项目进行改造的. 将shiro整合到web应用中 登录 退出 认证信息在页面展现,也就是显示菜单 shiro的过滤器 将shiro整合到web应用中 数据库脚步 sql脚步放到项目中,项目上传到共享的资源中,文章最后给出共享url. 去除项目中不使用shi

Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)

[Android布局学习系列]   1.Android 布局学习之——Layout(布局)详解一   2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)   3.Android 布局学习之——LinearLayout的layout_weight属性   4.Android 布局学习之——LinearLayout属性baselineAligned的作用及baseline    Layout Parameters(布局参数): 在XML文件中,我们经常看到类似与lay

AWARDBIOS设置详解

Phoenix–AwardBIOSv6.00PG AWARDBIOS设置详解 AWARD公司是世界最大的BIOS生产厂商之一,其产品也被广泛使用.但由于AWARD BIOS里面的信息都是基于英文且需要用户对相关专业知识的理解相对深入,使得普通用户设置起来感到困难很大.而如果这些设置不当的话,将会影响整台电脑的性能设置是不能正常使用,所以一份详细的设置说明是必要的.下面就介绍一下AWARD BIOS中的有关设置选项的含义和设置方法. 一.[StandardCMOS Setup](标准设定) 在本菜

IOS开发学习笔记(1)-----UILabel 详解

1. [代码][C/C++]代码     //创建uilabelUILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(20, 40, 280, 80)];//设置背景色label1.backgroundColor = [UIColor grayColor];//设置taglabel1.tag = 91;//设置标签文本label1.text = @"Hello world!";//设置标签文本字体和字体大小label1.

IOS开发学习笔记(2)-----UIButton 详解

1. [代码][C/C++]代码     //这里创建一个圆角矩形的按钮    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];    //    能够定义的button类型有以下6种,//    typedef enum {//        UIButtonTypeCustom = 0,          自定义风格//        UIButtonTypeRoundedRect,        

Linux学习— /etc/fstab文件详解

目录 /etc/fstab介绍 参数介绍 配置该文件的一些问题 一.介绍 在介绍/etc/fstab之前,需要先了解挂载和该文件的关系: 其实windows也一样需要挂载的,只不过在分区的时候windows被"挂载"到了C,D,E等盘. 任何硬件设备连接后,操作系统使用硬件,即需要挂载.windows只不过是自动"挂载"了,linux需要手动自己搞.在Linux系统下,例如每次挂载/dev/sr0(光盘设备文件)需要手动使用命令mount.当然,每次重启,开启时,硬