[Linux下MongoDB权限管理]

[Linux下MongoDB权限管理]

一,MongoDB权限介绍

1)mongodb安装完后,默认是不需要用户密码即可登录的,但是往往数据库方面我们会处于安全性的考虑而设置用户密码,

2)MongoDB是没有默认管理员账号的,所以要先添加管理员账号,在开启权限认证。

3)切换到admin数据库,添加的账号才是管理员的账号。

4)用户只能在用户所在的数据库登录,包括管理员账号。

5)管理员可以管理所有的数据库,但是不能直接管理其它数据库,要先在admin数据库中认证才可以,也是为了 安全性考虑。

二 ,MongoDB添加管理员账户

进入cli管理界面,只有进入此页面之后我们才能够对其进行操作。

2、添加管理用户(mongoDB 没有无敌用户root,只有能管理用户的用户 userAdminAnyDatabase)

利用mongo命令连接mongoDB服务器端:

img

> use admin
switched to db admin
> db.createUser( {user: “pfnieadmin”,pwd: “123456”,roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]});

成功后,你将会看到:

img

注:添加完用户后可以使用show users或db.system.users.find()查看已有用户.

3、添加完管理用户后,关闭MongoDB,并使用权限方式再次开启MongoDB,这里注意不要使用kill直接去杀掉mongodb进程,(如果这样做了,请去data/db目录下删除mongo.lock文件),可以使用db.shutdownServer()关闭.

4、使用权限方式启动MongoDB

在配置文件中添加:auth=true , 然后启动:

img

5、进入mongo shell,使用admin数据库并进行验证,如果不验证,是做不了任何操作的。

img

> use admin

> db.auth(“pfnieadmin”,“123456”) #认证,返回1表示成功

我们即可在>后面进行操作。连接数据库并且切换到用户表下

1,连接成功之后首先我们输入命令:show dbs,我们发现其系统中内置了一个数据库名字为local(如果大家查询出来还有一个admin数据库,那是因为你使用的是低版本的MongoDB),admin库是不存在的,需要我们自己创建。

show dbs
admin  0.078GB
local  0.078GB


(use admin) 使用此命令创建一个admin数据库,权限管理就要使用admin数据库,此命令也是切换数据库的命令

use admin
switched to db admin

创建一个用户

添加用户

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

登录

db.auth('pan','pan');

(show collections) 切换到admin库之后,使用show collections查询,我们发现该数据库下包含了一个system.user和system.version表,我们主要来看system.user表。

show collections
system.indexes
system.users
system.version

(db.system.users.find())首先使用命令查询system.user表中是含有数据,输入命令:db.system.users.find(),

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JF9GXDlm-1618817466776)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210418133317933.png)]

三MongoDB的roles角色简单介绍

1, MongoDB内置角色官网文档介绍:http://docs.mongoing.com/manual-zh/reference/built-in-roles.html

关于MongoDB的内置角色,我们大概可以分为以下几种来简单说一下

Database User Roles(数据库用户角色):read、readWrite

Database Administration Roles(数据库管理角色):dbAdmin、dbOwner、userAdmin

Culster Administration Roles(管理员组,针对整个系统进行管理):clusterAdmin、clusterManager、clusterMonitor、hostManager

Backup and Restoration Roles(备份还原角色组):backup、restore

All-Database Roles(所有数据库角色):readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

Superuser Roles(超级管理员):root、(dbOwner、userAdmin、userAdminAnyDatabase这几个角色角色提供了任何数据任何用户的任何权限的能力,拥有这个角色的用户可以在任何数据库上定义它们自己的权限)

Internal Role(内部角色,一般情况下不建议设置):__system

关于上面每一个角色的意义是什么,请自行去官网或者这篇文章http://www.cnblogs.com/SamOk/p/5162767.html查看

\1. 在上面我们在admin数据库下为pfnieadmin用户建立了一个userAdminAnyDatabase角色,使用这个用户来管理用户,可以通过这个角色来创建、删除角色。首先我们切换到admin下授权用户登录(重新连接之后的操作),命令如下:

step1: use admin

step2: db.auth("pfnieadmin","123456")  返回1则表示授权成功,否则授权失败。

step3: show dbs  验证授权是否成功。

\2. 授权成功之后,首先我们创建一个数据库(kgpc),给kgpc数据库创建一个read和readwrtite账号。命令如下:

step1: use kgpc

step2: db.createUser({

​          user:"jackread",                  

​          pwd:"123456",

​          roles:[

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

           ]

​       })

step3: 添加读写用户,命令如下:

db.createUser({

​          user:"jackreadwrite",                  

​          pwd:"123456",

​          roles:[

            {role:"readWrite",db:"kgpc"}

           ]

​       })

step4: 最后查询我们添加的用户如下所示,则说明我们对其读和读写用户添加完成,执行这个命令,注意下kgpc数据库下面.

img

\3. 上面我们创建了两个账号之后,首先我们来验证读写账号:

3.1 首先我们进入到kgpc数据库,然后对jackread进行验证,之后对kgpc数据库下的country表进行插入,会提示我们插入失败,没有权限,如下如所示:

use kgpc

db.auth("jackread","123456");

db.country.insert({"id":"1","name":"中国"});

img

3.2 从上面看到提示我们权授权失败,这时候用我们创建的jackreadwrite(读写)账号授权,然后在进行插入和查询,则发现插入以及查询均成功,如图所示:

use kgpc

db.auth(“jackreadwrite”,“123456”);

db.country.insert({“id”:“1”,“name”:“中国”});

db.country.find();

img

3.3 从上面我们看到对于读写权限验证没有问题。

\4. 上面测试了读写权限,下面我们测试一下读权限(read)

4.1 继续上面的操作,然后对jackread进行验证,之后对kgpc数据库下的country表查询,如图所示:

id":"1","name":"中国"});

db.country.find();

3.3 从上面我们看到对于读写权限验证没有问题。

\4. 上面测试了读写权限,下面我们测试一下读权限(read)

4.1 继续上面的操作,然后对jackread进行验证,之后对kgpc数据库下的country表查询,如图所示:

img

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值