mongoDB之用户及权限设置

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介:

转自 http://www.tuicool.com/articles/nE7vaqj

亲测有用


之前用MongoDB没有设置用户和权限,一直都是本机应用程序连接MongoDB。在服务器上部署后对外没有开数据库连接端口,本机应用程序连接再开放应用程序端口供外部访问。想想很不对劲还是设置下用户授权吧。

我部署的环境是windows下MongoDB2.4.8版本。首先要开启安全模式的话,在启动MongoDB服务的时候就要加上--auth参数,命令如下:

D:\mongodb>mongod.exe --dbpath D:\mongodb\data --logpath=D:\mongodb\logs\mongodb.log --auth

这样的话再连接MongoDB操作的时候就需要一定的权限。

一、首先我们需要在没有加"--auth"权限参数启动服务进行用户权限管理

我们这样启动MongoDB服务:

D:\mongodb>mongod.exe --dbpath D:\mongodb\data --logpath=D:\mongodb\logs\mongodb.log

这时不指定用户连接mongodb,是可以登录并操作的,我的操作如下:

D:\>mongo
MongoDB shell version: 2.4.8connecting to: test> show dbs
admin   (empty)local   0.078125GB>

可以看到默认显示两个库,我们需要进入admin库进行权限设置(这个时候因为服务没有添加权限参数,所以默认是有权限进行相关设置的)

> use admin

switched to db admin

> db.addUser('sa','sa')

{

"user" : "sa",

"readOnly" : false,

"pwd" : "75692b1d11c072c6c79332e248c4f699",

"_id" : ObjectId("53af835ada88ac42a40917a0")

}

> db.system.users.find()

{ "_id" : ObjectId("53af835ada88ac42a40917a0"), "user" : "sa", "readOnly" : false, "pwd" : "75692b1d11c072c6c79332e248c4f699" }

二、我们关掉之前开启的服务,添加"--auth"权限参数,重新启动MongoDB服务

D:\>mongod --dbpath D:\mongodb\data --logpath=D:\mongodb\logs\mongodb.log --auth

我们再次连接并操作:

D:\>mongo

MongoDB shell version: 2.4.8

connecting to: test

> use admin

switched to db admin

> show collections

Sun Jun 29 11:17:27.103 error: {

"$err" : "not authorized for query on admin.system.namespaces",

"code" : 16550

} at src/mongo/shell/query.js:128

发现如果不加身份信息默认连接的话,是没有权限操作的。我们验证下之前添加的用户,再操作试下:

> db.auth('sa','sa')1            //返回1表示验证成功,返回0表示验证失败
> show collections
system.indexes
system.users

发现验证成功可以对admin库进行操作了,我们再连接其他库试试:

D:\>mongo
MongoDB shell version: 2.4.8connecting to: test> show collections
Sun Jun 29 11:20:17.996 error: {  "$err" : "not authorized for query on test.system.namespaces",  "code" : 16550} at src/mongo/shell/query.js:128> db.auth('sa','sa')
Error: 18 { code: 18, ok: 0.0, errmsg: "auth fails" }0

发现这里验证失败了,之前设置的admin用户验证不管用。查了资料知道必须先从admin登录再use其他库才能被验证通过:

D:\>mongo
MongoDB shell version: 2.4.8connecting to: test> use admin
switched to db admin> db.auth('sa','sa')1> use test
switched to db test> show collections

三、添加完顶层admin用户,可以用admin账户进行其他用户的设置

如果想让单独的库有单独的用户名就得先从admin登录然后设置相应的用户信息,具体操作如下:

D:\>mongo
MongoDB shell version: 2.4.8connecting to: test> use admin
switched to db admin> db.auth('sa','sa')1                                //先从admin登录> use test
switched to db test> show collections> db.addUser('test','test') //添加test库的用户{        "user" : "test",        "readOnly" : false,        "pwd" : "a6de521abefc2fed4f5876855a3484f5",        "_id" : ObjectId("53af874c5017b6747e68da2a")
}

再次单独登录test试试:

D:\>mongo
MongoDB shell version: 2.4.8connecting to: test> show collections       //未登录没有权限Sun Jun 29 11:27:52.899 error: {  "$err" : "not authorized for query on test.system.namespaces",  "code" : 16550} at src/mongo/shell/query.js:128> db.auth('test','test')     //之前设置的账户1				    //登录成功> show collections
system.indexes
system.users

四、设置完admin账户后开启带权限参数的MongoDB服务在可视化管理器中管理用户权限

在windows下我使用了MongoVUE可视化管理工具。建立新连接:

之前启动不带auth参数的服务时,不添加用户名密码连接是可以连接的,因为设置了auth参数所以这里必须添加用户名和密码;把上面设置的admin用户sa填入就可以连接上了。 连接上之后打开一个库,里面有个Users设置

这里可以对某一个库进行用户的添加删除修改等操作,这是最高权限的admin视图,如果用test库的test用户登录的话,视图就只能看见test库了

以上就是windows下使用MongoDB在shell和可视化工具中对用户权限设置的简单操作方法。





      本文转自布拉君君 51CTO博客,原文链接:http://blog.51cto.com/5148737/1650732,如需转载请自行联系原作者



相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
4月前
|
NoSQL MongoDB 数据库
MongoDB【部署 03】Windows系统安装mongodb并设置用户名密码(无需安装mongosh)及SpringBoot集成报错 Command failed with error 18
MongoDB【部署 03】Windows系统安装mongodb并设置用户名密码(无需安装mongosh)及SpringBoot集成报错 Command failed with error 18
143 0
|
9月前
|
NoSQL MongoDB 数据库
mongodb使用使用 SCRAM 验证客户端设置访问控制
SCRAM 验证客户端设置访问控制
74 0
|
NoSQL 安全 MongoDB
mongodb设置用户账号密码登录
今天有个同事的项目中mongodb 被黑客攻占了,然后数据库被清掉,留下了一堆“案发现场”,还整了一个段话,附上给大家伙瞧瞧。。。。
mongodb设置用户账号密码登录
|
存储 监控 NoSQL
🍃MongoDB结合Koa2做用户登录验证
🍃MongoDB结合Koa2做用户登录验证
194 0
🍃MongoDB结合Koa2做用户登录验证
|
SQL 存储 NoSQL
MongoDB 在 2022 MongoDB 全球用户大会上发布新愿景,致力成为开发者数据平台提供商
引入一套统一的新功能,以满足开发者在构建现代应用程序方面日益增长的数据需求
MongoDB 在 2022 MongoDB 全球用户大会上发布新愿景,致力成为开发者数据平台提供商
|
NoSQL Java MongoDB
Springboot中设置MongoDB的超时时间
Springboot中设置MongoDB的超时时间
1977 0
|
NoSQL 关系型数据库 MySQL
全栈开发【第3期】MongoDB入门之数据库权限设置
全栈开发【第3期】MongoDB入门之数据库权限设置
380 0
|
NoSQL MongoDB 数据库
MongoDB 用户角色管理
MongoDB 服务默认是没有账号密码的,客户端连接上即可进行各种操作。如果在配置文件中,指定了auth=true,即开启了认证,那么客户端连接后需要认证才能执行操作。
MongoDB 用户角色管理
|
NoSQL MongoDB 数据库
MongoDB设置为Windows服务
MongoDB设置为Windows服务
238 0
MongoDB设置为Windows服务