当前位置: 首页 >数据库 > mongodb用户权限管理配置

mongodb用户权限管理配置

环境

mongodb 3.4
window7

MongoDB常用命令

[root@snails ~]# ps -ef|grep mongod[root@snails ~]# mongo --host=127.0.0.1 --port=27017MongoDB shell version: 3.2.7connecting to: 127.0.0.1:27017/test> show dbs  #显示数据库列表 > show collections  #显示当前数据库中的集合(类似关系数据库中的表)> show users  #显示用户> use <db name>  #切换当前数据库,如果数据库不存在则创建数据库。 > db.help()  #显示数据库操作命令,里面有很多的命令 > db.foo.help()  #显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令 > db.foo.find()  #对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) > db.foo.find( { a : 1 } )  #对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1

MongoDB没有创建数据库的命令,但有类似的命令。 如:如果你想创建一个“myTest”的数据库,先运行use
myTest命令,之后就做一些操作(如:db.createCollection(‘user’)),这样就可以创建一个名叫“myTest”的数据库。

其他命令

> db.dropDatabase()  #删除当前使用数据库> db.cloneDatabase("127.0.0.1")#将指定机器上的数据库的数据克隆到当前数据库> db.copyDatabase("mydb", "temp", "127.0.0.1")  #将本机的mydb的数据复制到temp数据库中> db.repairDatabase()  #修复当前数据库> db.getName()  #查看当前使用的数据库,也可以直接用db> db.stats()  #显示当前db状态> db.version()  #当前db版本> db.getMongo()  #查看当前db的链接机器地址> db.serverStatus()  #查看数据库服务器的状态

需求

MongoDB安装完成后,默认是不需要输入用户名密码即可登录的,但是往往数据库方面我们会出于安全性的考虑而设置用户名密码,本篇文章主要介绍了MongoDB添加管理员/普通用户的方法。

用户权限设置

网上总结了四条

  1. MongoDB是没有默认管理员账号,所以要先添加管理员账号,再开启权限认证。
  2. 切换到admin数据库,添加的账号才是管理员账号。
  3. 用户只能在用户所在数据库登录,包括管理员账号。
  4. 管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以。

创建管理员账号

In the admin database, add a user with the userAdminAnyDatabase role.
For example, the following creates the user myUserAdmin in the admin
database:

在admin数据库中,添加一个用户并赋予userAdminAnyDatabase角色。
例如,下面是在admin数据库中创建一个名为myUserAdmin用户。

注意: The database where you create the user (in this example, admin) is the user’s authentication database. Although the user would authenticate to this database, the user can have roles in other databases; i.e. the user’s authentication database does not limit the user’s privileges.

注意:你创建用户的这个数据库(这里就是admin数据库)是用户认证数据库。
尽管用户是在这个数据库认证,而用户又有其他数据库的角色;即,用户认证数据库不限制用户权限。

window管理员下启动cmd,并且连接上mongodb
连接命令:

D:\Program Files\MongoDB\Server\3.4\bin>mongo.exe

创建用户命令:

use admindb.createUser(  {user: "myUserAdmin",pwd: "abc123",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]  })#结果Successfully added user: {"user" : "admin","roles" : [{"role" : "userAdminAnyDatabase","db" : "admin"}]}

执行以下命令,看看结果

> show users> db.system.users.find()

开启权限验证

window中:
D:\Program Files\MongoDB\Server\3.4\mongod.cfg
这个配置文件是我自己手动配置,关于mongodb配置,可以参考:
mongodb3.4的安装和配置

在配置文件中添加.

security:authorization: enabled

全部配置:

systemLog:destination: filepath: D:\mongodbdata\log\mongod.loglogAppend: truestorage:joual:enabled: truedbPath: D:\mongodbdata\dbnet:bindIp: 127.0.0.1port: 27017security:authorization: enabled

liunx:

[root@snails ~]# echo "auth = true" >> /root/mongodb/bin/mongodb.conf[root@snails ~]# systemctl restart systemd-mongodb

接着就是重启mongod实例。说明了就是重启mongodb服务。

验证权限是否生效

D:\Program Files\MongoDB\Server\3.4\bin>mongo.exeMongoDB shell version v3.4.1connecting to: mongodb://127.0.0.1:27017MongoDB server version: 3.4.1> use adminswitched to db admin> db.auth('myUserAdmin', 'abc123')1> show dbsadmin  0.000GBlocal  0.000GB

添加普通用户

Once authenticated as the user administrator, use db.createUser() to create additional users. You can assign any built-in roles or user-defined roles to the users.

一旦经过认证的用户管理员,可以使用db.createUser()去创建额外的用户。
你可以分配mongodb内置的角色或用户自定义的角色给用户。

The myUserAdmin user only has privileges to manage users and roles. As myUserAdmin, if you attempt to perform any other operations, such as read from a foo collection in the test database, MongoDB retus an error.

这个myUserAdmin用户仅仅只有特权去管理用户和角色,myUserAdmin,如果你试图执行其他任何操作,例如在test数据库中的foo集合中去读数据,mongodb将返回错误。

注意:The database where you create the user (in this example, test) is that user’s authentication database. Although the user would authenticate to this database, the user can have roles in other databases; i.e. the user’s authentication database does not limit the user’s privileges.

你创建用户的数据库(这里就是test数据库)是该用户认证数据库。尽管用户认证是这个数据库,用户依然可以有其他数据库的角色。即用户认证数据库不限制用户权限。

创建普通用户:

>use test> db.createUser(... {... user:"test1",... pwd: "test1",... roles: [{ role: "readWrite", db: "test"}]... }... )Successfully added user: {"user" : "test1","roles" : [{"role" : "readWrite","db" : "test"}]}> exitbyeD:\Program Files\MongoDB\Server\3.4\bin>mongo.exeMongoDB shell version v3.4.1connecting to: mongodb://127.0.0.1:27017MongoDB server version: 3.4.1> use testswitched to db test> db.auth('test1','test1')1

创建超极用户root

window中的cmd中执行:

use admindb.createUser(  {user: "root",pwd: "root",roles: [ { role: "root", db: "admin" } ]  });

MongoDB数据库角色


内建的角色
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
内部角色:__system
角色说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限

官网参考地址:
http://docs.mongoing.com/manual-zh/tutorial/enable-authentication.html

如何对MongoDB 3.2.7进行用户权限管理配置

MongoDB学习笔记—权限管理

作者:山鬼谣me
来源链接:https://blog.csdn.net/u013066244/article/details/53874216

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/112333.html

标签:MongoDB
分享给朋友:

“mongodb用户权限管理配置” 的相关文章

Mybatis中的${}和#{}区别 2022年05月17日 21:41:44
性能优化|Mysql优化之Explain精讲 2022年06月02日 21:18:04
mysql查询最新的一条记录 2022年06月06日 16:04:12
mysql1.查询 2022年06月19日 08:41:49
MySQL连接查询 2022年06月20日 12:15:22
mysql 查询自增id的下一个值 2022年06月21日 23:30:20