1. MongoDB 版本 v4.0.7
  2. 系统 Win10

 注意:

      要为数据库创建用户,必须先切换到相应的数据库:

      要为数据库创建用户,必须先切换到相应的数据库:

      要为数据库创建用户,必须先切换到相应的数据库:

#先切换
use 数据库名; #再创建
db.createUser({})

超级管理员

设置 admin(给admin这个库在设置密码)

use.admin
db.createUser({
user: 'admin', // 用户名
pwd: '', // 密码
roles:[{
role: 'root', // 角色
db: 'admin' // 数据库
}]
})

设置完成,可以输入 show users 查看是否设置成功。

开启验证

找到 MongoDB 安装目录,打开mongodb.conf文件,找到以下这句

authu=true

重启 MongoDB

kill -9 mongo进程号
./mongod -f mongodb.conf
 或者:
关闭
mongod --journal --shutdown -f /usr/local/mongodb/bin/mongodb.conf
启动
mongod --journal -f /usr/local/mongodb/bin/mongodb.conf
任务管理器界面

找到 MongoDB 服务,右键重新启动。

这时,我们可以打开 powershell 连接数据库:

输入 mongo:

 

显示连接成功,但是当我们输入其他指令时,不会提示没有权限,但是不会执行:

登录数据库

// 方式一
mongo
use admin
db.auth('admin', '') // 方式二
mongo admin -u admin -p 123456

这时候我们就可以正常访问和操作数据了。

添加数据库用户

我们除了可以设置数据库的超级管理员以外,还可以给每个数据库设置单独的管理员。其只有操作单独数据的一定权限。

use test  // 跳转到需要添加用户的数据库
db.createUser({
user: 'mts', // 用户名
pwd: '123456', // 密码
roles:[{
role: 'readWrite', // 角色
db: 'qidatas' // 数据库名
}]
})

常用命令

show users  // 查看当前库下的用户

db.dropUser('testadmin')  // 删除用户

db.updateUser('admin', {pwd: ''})  // 修改用户密码

db.auth('admin', '')  // 密码认证

MongoDB 数据库默认角色

数据库用户角色:read、readWrite
数据库管理角色:dbAdmin、dbOwner、userAdmin
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager
备份恢复角色:backup、restore
所有数据库角色: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、
dbAdminAnyDatabase
超级用户角色:root 

pymongo连接需要认证的mongo

# db mongodb
db_mongo_attr = {
'host': '*',
'port': 27,
'database':'tease',
'username':'*v',
'password':'*
} def db_conn(*args):
"""
:return:pymongodb db级别的实例
"""
dbs = pymongo.MongoClient(di['host'],di['port'],)
#dbs = pymongo.MongoClient("mongodb://user:pass@ip:port/databasename")
db = dbs[di['database']]
db.authenticate(di['username'],di['password'])
return db

  要注意的是mongodb的用户是与数据库一体的,所以是在数据库级别进行用户权限验证。  

二.注意点

  1.不管是有加密码认证还是没有加密码认证的库只有库里面的没有集合或者集合是空的,在数据库列表都不会显示该数据库

  2.数据库加了密码认证之后,新建数据库,必须先切换到admin这个数据库,进行认证后才能创建集合创建库,而当库是空的,或者库里面的所有集合都是空的,
则该库不会显示在该库列表中
  步骤:
    1. 用管理员账号,密码登录数据库,或者等登录数据库后,切换到admin这个库,然后进行管理员身份验证,db.auth('adminName',"adminPassword")
   2. use dataName #创建新的库名
3. db.createUser({user:"cc",pwd:"cc777",roles:[{role:"dbOwner",db:"dataname"}]}) #为新库设置密码和角色
4. 退出控制台,用新的账号密码登录:mongo -u username -p password dbname(如果这边指定的是新的库,新的库对应的账号密码,就不用第五步)
5. 切换到刚才新建的数据库,db.auth("新数据库用户名", "新数据库密码" )
6. db。collectionName.insert({'1':1}) #随便指定集合,插入数据,要不然集合是空的,是不会把空的库展现在库列表中
  3.在Gui中想创建辛苦,就直接指定认证的库为admin,admin的账号,密码就行,用其他的库认证的连接可以创建新的库,但是不能创建新的集合,相当于不能创建新的库,
因为mongo的库认证对应的是到每一个库当中的,而不是整个mongo库对应一个账户密码
    
    

mongo密码的设置的更多相关文章

  1. ios9怎么设置6位密码 ios9设置6位密码图文教程

    在原来的 iOS 系统中,只有四位数字密码与复杂密码之分,而在 iOS9 系统中却多出了一个六位数字密码,那ios9怎么设置6位密码,今天小编就为大家带来ios9设置6位密码图文教程   在原来的 i ...

  2. Oracle 11g sys,system 密码忘记设置解决办法

    原文:Oracle 11g sys,system 密码忘记设置解决办法 1.启动sqlplus 2.请输入用户名:  sqlplus/as sysdba 3.输入口令: 直接回车 4.连接到: Ora ...

  3. AndroidStudio制作“我”的界面,设置,修改密码,设置密保和找回密码

    前言 大家好,给大家带来AndroidStudio制作"我"的界面,设置,修改密码,设置密保和找回密码的概述,希望你们喜欢 学习目标 掌握修改密码功能的开发,和实现用户密码的修改: ...

  4. Linux免密码登录设置

    Linux免密码登录设置 假设要登录的机器为192.168.1.100,当前登录的机器为192.168.1.101. 首先在101的机器上生成密钥(如果已经生成可以跳过): $ ssh-keygen ...

  5. mongo副本集设置主库权重,永远为主

    mongo副本集设置主库权重,即使主库宕机了再重启也还是主库. cfg = rs.conf()     ------->(查看序列)cfg.members[0].priority = 1 (设置 ...

  6. 无法连接mysql,请检查mysql是否已启动及用户密码是否设置正确

    安装好后,登录后台提示 无法连接mysql,请检查mysql是否已启动及用户密码是否设置正确 检查mysql是否启动netstat -lnpt是否有3306端口? 一 有A 检查/www/wdlinu ...

  7. Oracle密码过期设置和修改密码问题

    Oracle密码过期设置和修改密码问题 学习了:https://jingyan.baidu.com/article/ce09321b5608612bff858ff3.html sqlplus / as ...

  8. Mysql 修改密码和设置远程连接

    [参考文章]:mysql修改root密码和设置权限 1. 修改密码 1.1 set password 登录mysql set password for 用户名@localhost = password ...

  9. MYSQL命令练习及跳过数据库密码进行密码重新设置

        2.看当前所有数据库:show databases; 3.进入mysql数据库:use mysql; 4.查看mysql数据库中所有的表:show tables; 5.查看user表中的数据: ...

随机推荐

  1. Serializable 接口(序列化)

    目录 Serializable 接口(序列化) 前言 用途 如何实现 异常 serialVersionUID transient关键字 Serializable 接口(序列化) 前言 查看API文档时 ...

  2. PHP--foreach的问题

    <?php echo "<pre>"; $data = ['a', 'b', 'c']; foreach($data as $key => $val){ $ ...

  3. 接受H0的坏处|试验误差|置信度由来|

    生物统计与实验设计 置信度(0.05 0.01)是通过实验次数估计值的分布得到的,它是整个分布的期望,这个值的确立需要具体情况具体分析. 肯定很难,因为否定一次很容易.虽然如果没有否定(eg:得到p= ...

  4. HDU-1711-Number Sequence(KMP)(Rabin-Karp)

    Rabin-Karp Accepted 1711 904MS 5272K 1310 B G++ #include "bits/stdc++.h" using namespace s ...

  5. 第二类Stirling数推导

  6. Django学习之路04

    视图层 小白必会三板斧 HttpResponse render redirect django视图函数必须要给返回一个HttpResponse对象(render和redirect内部返回的也是一个Ht ...

  7. yii框架通过控制台命令创建定时任务

    假设Yii项目路径为 /home/apps 1. 创建文件 /home/apps/web/protected/commands/console.php $yii = '/home/apps/frame ...

  8. Microsoft Translator:消除面对面交流的语言障碍

    ​ Translator:消除面对面交流的语言障碍" title="Microsoft Translator:消除面对面交流的语言障碍"> ​ James Simm ...

  9. 一个简单的爬取b站up下所有视频的所有评论信息的爬虫

    心血来潮搞了一个简单的爬虫,主要是想知道某个人的b站账号,但是你知道,b站在搜索一个用户时,如果这个用户没有投过稿,是搜不到的,,,这时就只能想方法搞到对方的mid,,就是 space.bilibil ...

  10. AVCaptureInput和AVCaptureOutput子类介绍

    AVCaptureInput AVCaptureDeviceInput:用于从AVCaptureDevice对象捕获数据. AVCaptureScreenInput:从macOS屏幕上录制的一种捕获输 ...