服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - MongoDB - MongoDB 用户相关操作

MongoDB 用户相关操作

2021-07-24 17:44AsiaYe MongoDB

这篇文章主要介绍了MongoDB 用户相关操作,帮助大家更好的理解和学习使用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

延伸 · 阅读

精彩推荐
  • MongoDBMongodb实现定时备份与恢复的方法教程

    Mongodb实现定时备份与恢复的方法教程

    这篇文章主要给大家介绍了Mongodb实现定时备份与恢复的方法教程,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面...

    chenjsh364522020-05-13
  • MongoDB迁移sqlserver数据到MongoDb的方法

    迁移sqlserver数据到MongoDb的方法

    这篇文章主要介绍了迁移sqlserver数据到MongoDb的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    听枫xl9682021-01-03
  • MongoDB分布式文档存储数据库之MongoDB分片集群的问题

    分布式文档存储数据库之MongoDB分片集群的问题

    这篇文章主要介绍了分布式文档存储数据库之MongoDB分片集群的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...

    Linux-18743072020-12-20
  • MongoDBMongoDB 内存使用情况分析

    MongoDB 内存使用情况分析

    都说 MongoDB 是个内存大户,但是怎么知道它到底用了多少内存呢...

    MongoDB教程网10002020-09-29
  • MongoDBMongoDB安装图文教程

    MongoDB安装图文教程

    这篇文章主要为大家详细介绍了MongoDB安装图文教程,分为两大部分为大家介绍下载MongoDB和安装MongoDB的方法,感兴趣的小伙伴们可以参考一下 ...

    Yangyi.He6132020-05-07
  • MongoDBMongoDB中javascript脚本编程简介和入门实例

    MongoDB中javascript脚本编程简介和入门实例

    作为一个数据库,MongoDB有一个很大的优势——它使用js管理数据库,所以也能够使用js脚本进行复杂的管理——这种方法非常灵活 ...

    MongoDB教程网6982020-04-24
  • MongoDBmongodb基本命令实例小结

    mongodb基本命令实例小结

    这篇文章主要介绍了mongodb基本命令,结合实例形式总结分析了MongoDB数据库切换、查看、删除、查询等基本命令用法与操作注意事项,需要的朋友可以参考下...

    dawn-liu3652020-05-26
  • MongoDBMongoDB凭什么跻身数据库排行前五

    MongoDB凭什么跻身数据库排行前五

    MongoDB以比去年同期超出65.96分的成绩继续雄踞榜单前五,这个增幅在全榜仅次于PostgreSQL的77.99,而其相对于4月份的6.10分的增长也是仅次于微软SQL Server排名...

    孙浩峰3892020-05-22