mongodb中的添加用户操作

mongodb添加用户

本教程介绍mongodb中添加用户的一些操作

mongodb中的用户是什么

在mongodb中通过用户来管理每个数据库的权限,想要控制数据库的使用权,就需要添加用户,给指定的用户分配权限,让特定用户来做特定的操作。

添加用户有什么用

细分权限,限制数据库的访问和使用,提高mongodb的安全性。

为什么要添加用户

防止被人非法使用,做一些非法操作,导致一些严重后果。
比如删库跑路─=≡Σ(((つ•̀ω•́)つ

怎么添加用户

首先,在mongod启动时是不会启动校验的

mongod

启动mongod后,连接到mongod

root@e444205572bd:/# mongo
MongoDB shell version v4.1.9
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("e3fd959c-db96-4853-a306-9edcc8c5baa7") }
MongoDB server version: 4.1.9
......

指定到admin数据库下

> use admin
switched to db admin

通过指定的函数创建用户

> db.createUser({user:"user", pwd:"123123", roles:["root"]})
Successfully added user: { "user" : "user", "roles" : [ "root" ] }

通过show查看该数据库的用户

> show users
{
    "_id" : "admin.user",
    "userId" : UUID("95e02aca-49c2-4852-b2bc-7dc4f2738175"),
    "user" : "user",
    "db" : "admin",
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ],
    "mechanisms" : [
        "SCRAM-SHA-1",
        "SCRAM-SHA-256"
    ]
}

创建用户成功

添加用户之后如何连接mongodb

使用mongo连接

root@1410aa527d51:/# mongo -u user -p 123123         
MongoDB shell version v4.1.9
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("8e9a9173-8263-40ea-b814-39090f0c90b7") }
MongoDB server version: 4.1.9
........

在mgo中进行连接

"mongodb://user:123123@localhost:27017"
info := &mgo.DialInfo{
        Addrs:[]string{
            "localhost:27017",
        },
        Direct:false,
        Timeout:30 * time.Second,
        Database: "user",
        Source:"admin",
        Username:"user",
        Password:"123123",
    
    }

    session, err := mgo.DialWithInfo(info)


    //session, err := mgo.Dial(url)
    if err != nil {
        logs.Error(err)
    }

注:

通过docker部署的mongo,在启动时添加参数MONGO_INITDB_ROOT_USERNAMEMONGO_INITDB_ROOT_PASSWORD是可以创建用户的。但是如果之前的mongo并没有创建用户,并且你挂载了volume,把容器中的db数据映射到了宿主机,那你就要进入容器中手动创建用户了。

懒的不行,随缘搬运有道云笔记

29 声望
5 粉丝
0 条评论
推荐阅读
时间轮与go-zero中时间轮的实现解析
想象这么一个场景,我需要维护一个连接池,连接池中的连接是有超时时间的,连接会保持一定频率发送心跳包比如5s发一次,30s内如果没有收到keep-alive就会过期,到过期时间的conn断开连接,如何去设计这个连接池?

黄淑宁阅读 2k

前端如何入门 Go 语言
类比法是一种学习方法,它是通过将新知识与已知知识进行比较,从而加深对新知识的理解。在学习 Go 语言的过程中,我发现,通过类比已有的前端知识,可以更好地理解 Go 语言的特性。

robin23阅读 3.3k评论 6

封面图
Golang 中 []byte 与 string 转换
string 类型和 []byte 类型是我们编程时最常使用到的数据结构。本文将探讨两者之间的转换方式,通过分析它们之间的内在联系来拨开迷雾。

机器铃砍菜刀24阅读 58.3k评论 2

年度最佳【golang】map详解
这篇文章主要讲 map 的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白 map 底层原理。

去去100216阅读 11.6k评论 2

年度最佳【golang】GMP调度详解
Golang最大的特色可以说是协程(goroutine)了, 协程让本来很复杂的异步编程变得简单, 让程序员不再需要面对回调地狱, 虽然现在引入了协程的语言越来越多, 但go中的协程仍然是实现的是最彻底的. 这篇文章将通过分析...

去去100215阅读 12k评论 4

万字详解,吃透 MongoDB!
MongoDB 是一个基于 分布式文件存储 的开源 NoSQL 数据库系统,由 C++ 编写的。MongoDB 提供了 面向文档 的存储方式,操作起来比较简单和容易,支持“无模式”的数据建模,可以存储比较复杂的数据类型,是一款非常...

JavaGuide8阅读 1.7k

封面图
数据结构与算法:二分查找
一、常见数据结构简单数据结构(必须理解和掌握)有序数据结构:栈、队列、链表。有序数据结构省空间(储存空间小)无序数据结构:集合、字典、散列表,无序数据结构省时间(读取时间快)复杂数据结构树、 堆图二...

白鲸鱼9阅读 5.3k

懒的不行,随缘搬运有道云笔记

29 声望
5 粉丝
宣传栏