好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

MongoDB 用户相关操作

   在我们第一次启动 MongoDB 的时候,仅仅是制定了data数据目录和log日志目录,并没有指定--auth选项,也就是并不需要认证。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

[root@VM-0-14-centos mongo_27017] # mongo

MongoDB shell version v4.0.6

connecting to: mongodb: //127 .0.0.1:27017/?gssapiServiceName=mongodb

Implicit session: session { "id" : UUID( "61c35b47-f43b-48fc-a43e-066f56987e9a" ) }

MongoDB server version: 4.0.6

> db

test

 

> show dbs;

admin  0.000GB

config 0.000GB

local   0.000GB

 

> use admin

switched to db admin

 

> show users ;

> db.system.user. find ()

      我们第一次登录MongoDB的服务,输入db,发现当前数据库是test,但是show dbs却看不到test数据库,其实这个是MongoDB的一个特点,test是一个虚的数据库,想要看到test中的内容,你只需要给test数据库中插入一个文档即可。

     接着,我们可以看到,当我们输入show users的时候,没有看到任何账号信息。接下来我们准备开启--auth参数来重启MongoDB服务,在重启之前,我们需要保证已经分配了新的账号,下面我们开始分配账号:

?

1

2

3

4

5

6

7

8

9

10

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

Successfully added user: {

     "user" : "root" ,

     "roles" : [

         {

             "role" : "root" ,

             "db" : "admin"

         }

     ]

}

这里,我们可以看到,我们分配了一个账号:

user:root     # 用户 名

pwd:123456 # 密码

roles:root    # 角色

db:admin     # 数据库

角色root有必要做一下解释:

?

1

2

3

4

5

6

7

8

9

10

Read:   允许用户读取指定数据库,

readWrite:允许用户读写指定数据库

dbAdmin: 允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile

userAdmin:允许用户向system. users 集合写入,可以在指定数据库里创建、删除和管理用户

clusterAdmin:     只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。

readAnyDatabase:    只在admin数据库中可用,赋予用户所有数据库的读权限

readWriteAnyDatabase: 只在admin数据库中可用,赋予用户所有数据库的读写权限

userAdminAnyDatabase: 只在admin数据库中可用,赋予用户所有数据库的userAdmin权限

dbAdminAnyDatabase:  只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。

root:         只在admin数据库中可用。超级账号,超级权限

更详细的内容,请参看官方文档:

https://docs.mongodb.com/manual/reference/built-in-roles/#dbAdmin

好了,创建好用户之后,我们重启MongoDB服务,在配置文件中打开--auth参数,或者直接在命令行里面指定auth参数,重新登陆:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

[root@VM-0-14-centos mongo_27017] # mongo

MongoDB shell version v4.0.6

connecting to: mongodb: //127 .0.0.1:27017/?gssapiServiceName=mongodb

Implicit session: session { "id" : UUID( "5f2b0fa6-a1e3-4aaf-b43f-3525e19c33d2" ) }

MongoDB server version: 4.0.6

>

> use admin

switched to db admin

> show users

2020-10-28T23:42:06.127+0800 E QUERY  [js] Error: command usersInfo requires authentication :

_getErrorWithCode@src /mongo/shell/utils .js:25:13

DB.prototype.getUsers@src /mongo/shell/db .js:1763:1

shellHelper.show@src /mongo/shell/utils .js:859:9

shellHelper@src /mongo/shell/utils .js:766:15

@(shellhelp2):1:1

> db.auth( "root" , "123456" )

1

> show users

{

     "_id" : "admin.root" ,

     "user" : "root" ,

     "db" : "admin" ,

     "roles" : [

         {

             "role" : "root" ,

             "db" : "admin"

         }

     ],

     "mechanisms" : [

         "SCRAM-SHA-1" ,

         "SCRAM-SHA-256"

     ]

}

可以看到,当我们第一次使用show users的命令查看用户的时候,系统拒绝了我们,显示:

Error: command usersInfo requires authentication

然后我们进行权限校验:

use admin

db.auth("root","123456")

这下可以了。

不知道大家有没有留意到一个细节,我们登陆的时候,使用mongo命令登陆的,然后进行用户认证,有没有一种方法可以直接在登陆的时候就进行用户认证呢?答案是有的。

登陆方法一:

mongo

use admin

db.auth("user":"password")

登陆方法二:

mongo -u "user" -p "password"

如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

[root@VM-0-14-centos mongo_27017] # mongo -u "root" -p "123456"

MongoDB shell version v4.0.6

connecting to: mongodb: //127 .0.0.1:27017/?gssapiServiceName=mongodb

Implicit session: session { "id" : UUID( "ef872d7a-77d9-43c2-bf3d-e04867379c0a" ) }

MongoDB server version: 4.0.6

> use admin

switched to db admin

> show users

{

     "_id" : "admin.root" ,

     "user" : "root" ,

     "db" : "admin" ,

     "roles" : [

         {

             "role" : "root" ,

             "db" : "admin"

         }

     ],

     "mechanisms" : [

         "SCRAM-SHA-1" ,

         "SCRAM-SHA-256"

     ]

}

>

到这里,我们已经学会了第一次登陆MongoDB之后,如何进行初始用户配置、如何开启MongoDB的认证模式(--auth参数)、以及在登录的时候如何进行用户认证,用户这块儿还有很多其他内容,下一节我们展开说。

以上就是MongoDB 用户相关 操作 的详细内容,更多关于MongoDB 用户操作的资料请关注服务器之家其它相关文章!

原文链接:https://cloud.tencent.com/developer/article/1739358

查看更多关于MongoDB 用户相关操作的详细内容...

  阅读:26次