mongodb之用户管理

Mongo 系统数据库介绍以及权限设置。

本文中只正对mongo2.61有效,较低版本中的命令在新版本中慢慢被替换掉了或是不推荐使用。例如,在mongo242版本中使用db.addUser()来创建用户,但是在mongo261中使用这个命令时,会提示不推荐使用这个命令。

1.系统数据库介绍。

Mongo中只用两个系统数据,分别是admin  ,和 local 。Admin主要用来存储的用户,角色,版本的相关信息。Local 主要存储本地服务器的相关信息(服务器的启动和关闭相关信息,副本集,复制的相关信息)。在副本集中,这个数据库是不会被复制的。

2.安全设置。

如果在配置文件中没有设置auth=true,那么任何客服端都可以链接到mongo服务器,如果admin的system.users 中没有用户那么任何客户端都可以对mongo服务器做任何操作,没有任何限制。所以在首次登陆mongo的时候第一件事就是设置一个登陆用户,并且重启服务。

3.用户相关问题。

创建用户:db.createUser()

删除用户:db.dropUser(UserName)

修改密码:db.changeUserPassword(“UserName”,“NewPWD”)

实例一:删除用户:

rs0:PRIMARY> db.system.users.find({user:"test"})

{ "_id" : "admin.test", "user" : "test", "db" : "admin", "credentials" : { "MONGODB-CR" : "d2c20ba3ec3c642d7187d11cb54a9016" }, "roles" : [ { "role" : "root", "db" : "admin" } ] }

rs0:PRIMARY> db.dropUser("test")

true

rs0:PRIMARY>

实例二:修改用户密码:

rs0:PRIMARY> db.auth("test1","[email protected]")

1

rs0:PRIMARY> db.changeUserPassword("test1","[email protected]")

rs0:PRIMARY> db.auth("test1","[email protected]")

1

rs0:PRIMARY>

4:创建用户

用户创建比较复杂,涉及到用户的权限,角色问题。

1.创建用户

(1).创建一个不受访问限制的超级用户,该用户可以对任何数据库,mongo服务器做任何操作。

方式1:

use admin

db.createUser(

{

user:"admin",

pwd:"[email protected]",

roles:["root"]

} )

方式2:

db.createUser(

{

user: "admin",

pwd: "[email protected]",

roles:     [       {

role: "userAdminAnyDatabase",

db: "admin"

}  ]  } )

(2).创建一般用户,也是用createUser

use db01

db.createUser(

{

user:"proUser",

pwd:"[email protected]",

roles:[

{role:"read",db:"db01"},

{role:"read",db:"db02"},

{role:"read",db:"db03"} ]

} )

用户proUser 对 db01,db02,db03 拥有读权限

(3).常用的角色介绍:

read:只读角色

readWrite:读写角色

dbAdmin:数据库管理权限

userAdmin:数据库的用户管理权限

clusterAdmin:集群管理权限(副本集、分片、主从等相关管理)

readAnyDatabase:任何数据库的只读权限(和read相似)

readWriteAnyDatabase:何数据库的读写权限(和readWrite相似)

userAdminAnyDatabase:任何数据库用户的管理权限(和userAdmin相似)

dbAdminAnyDatabase:任何数据库的管理权限(dbAdmin相似)

角色拥有的权限参考:

http://drops.wooyun.org/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8/2470

(4).用户具体信息查看

查看用户权限:

db.runCommand(

{

usersInfo:"userName",

showPrivileges:true

} )

查看用户信息:

db.runCommand({usersInfo:"admin"})

rs0:PRIMARY> db.runCommand({usersInfo:"root"})

{

"users" : [

{

"_id" : "admin.root",

"user" : "root",

"db" : "admin",

"roles" : [

{

"role" : "root",

"db" : "admin"

}

]

}

],

"ok" : 1

}

note:

1.增加用户或是删除用户都报错的解决方法。

Error: couldn‘t add user: User and role management commands require auth data to have schema version

http://jingyan.baidu.com/article/6b97984d999ff31ca2b0bfce.html

参考链接:

http://drops.wooyun.org/%E8%BF%90%E7%BB%B4%E5%AE%89%E5%85%A8/2470

http://www.chinacloud.cn/show.aspx?id=13972&cid=22

http://www.jb51.net/article/53830.htm

时间: 2024-10-19 21:39:37

mongodb之用户管理的相关文章

mongodb之用户管理与系统管理常用命令

## mongodb的用户管理(认证管理) 用户分三种 全局用户 数据库对应用户 只读用户 ### 创建全局用户(全局用户只能在admin账户下创建) 创建了一个名为zhuima,密码为zhuima的全局账户 [[email protected] ~]# hostname redis.unix178.com [[email protected] ~]# mongo MongoDB shell version: 2.4.6 connecting to: test > show dbs local0

MongoDB快速入门学习笔记7 MongoDB的用户管理操作

1.修改启动MongoDB时要求用户验证加参数 --auth 即可.现在我们把MongoDB服务删除,再重新添加服务 mongod --dbpath "D:\work\MongoDB\data" --logpath "D:\work\MongoDB\log\mongodb.log" --install --serviceName "MongoDB" --auth 2.创建用户,并使用创建的用户登录打开shell操作界面,默认test数据,再查看所

mongodb的用户管理

简介:由于mongodb数据的用户管理是基于单个库的管理,他的管理策略大概如下 如果验证了admin库的账户,那么所有的库都可以访问 如果验证了非admin库的账户,那么此权限只能访问当前库下的数据 步骤建议: 如果要对数据库进行账户设置,最好我们首先不要开启数据库验证,然后进入admin库,创建密码 退出添加 -auth  验证重启mongodb然后使用admin库的账户进行验证,如果通过那么进入其它库进行账户创建,完成后重新登录进行验证 验证如下: 启动mongod mongod.exe -

Mongodb 授权 用户管理 添加用户

[开发过程的随笔总结,欢迎您的点评,可以做到更加严谨] 简介:mongoDB noSql数据库 文档型数据库 前些天,做一个日志归类入库项目的时候  用mongoDB进行持久化存储   防止mongoDb的无权限链接,添加了权限验证 1 如果mongoDB是开放内网地址的话,不用担心外部链接 2 mongoDB添加用户(版本mongoDB 3.2.7) 授权方式启动服务 要让用户生效, 需要启动服务器时,就指定 --auth 选项. 操作mongoDB前先进行授权 db.auth('root',

mongodb 数据库用户管理

测试环境 centos 6.7(x64) mongodb-linux-x86_64-2.7.8.tgz 1.创建系统级别管理用户use admindb.createUser({user: "root",pwd: "123456",roles: [{role: "userAdminAnyDatabase",db:"admin"}]}) 2.创建正对具体数据库管理用户use abcdb.createUser({user: &quo

MongoDB的用户管理命令

1.给TD数据库添加用户使用  use TD 然后执行 db.addUser("名称","密码"); 即可添加: 2.启用用户使用 db.auth("名称","密码");即可: 3.一般在项目中我们要启用安全检查,在配置mongoDB的数据库路径的时候在后面加上 --auth  这样就启动了安全检查,不是该数据库的用户是不能操作该数据库的: 4.删除一个用户使用 db.system.users.remove({user:&qu

浅析MongoDB用户管理

1. 创建一个超级用户 use admin db.createUser( { user: "adminUserName", pwd: "userPassword", roles: [ { roles: "userAdminAnyDatabase", db: "admin" } ] } ) 超级用户的role有两种,userAdmin或者userAdminAnyDatabase(比前一种多加了对所有数据库的访问). db是指定数

mongodb用户管理

角色具体说明:Read:允许用户读取指定数据库readWrite:允许用户读写指定数据库dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建.删除,查看统计或访问system.profileuserAdmin:允许用户向system.users集合写入,可以找指定数据库里创建.删除和管理用户dbOwner:数据库拥有者,包含readWrite.dbAdmin.userAdminclusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限readAny

mongodb之用户/认证/角色/权限管理

前言 用户权限管理很重要,只给需要的权限,防止应用系统漏洞导致脱库 认证和授权 Authentication 认证识别,解决我是谁 Authorization 操作授权,我能做什么 认证机制 MONGODB-CR 官方自定义实现认证机制,通过用户名和密码,通过challenge-response方式,来识别和验证授权.SCRAM-SHA-1认证机制有更好的安全性,新版本默认使用SCRAM-SHA-1.不建议使用MONGODB-CR模式. SCRAM-SHA-1 3.0版本新加功能,Mongodb