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. 使用框架结构之frameset

    首先,我希望在你的目录下,有4个网页,各自显示不同的内容. 如图所示: 1.html显示"火影忍者" 2.html显示"英雄联盟" 3.html显示" ...

  2. Node.js知识点详解(一)基础部分

    转自:http://segmentfault.com/a/1190000000728401 模块 Node.js 提供了exports 和 require 两个对象,其中 exports 是模块公开的 ...

  3. SWUST OJ NBA Finals(0649)

    NBA Finals(0649) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 404 Accepted: 128   Descri ...

  4. python基础 生成器 迭代器

    列表生成式: a=[1,2,3] print a b=[i*2 for i in range(10)] #i循环10次,每一个i的值乘2就是列表中的值.列表生成式 print b >>[1 ...

  5. Python之路购物车

    #coding:utf-8 wages=raw_input('what are your wages:') lise_commodity=[('apples',50),('orange',55),(' ...

  6. box-sizing: border-box

    如果在元素上设置了 box-sizing: border-box; 则 padding(内边距) 和 border(边框) 也包含在 width 和 height 中

  7. Python 破解极验滑动验证码

    Python 破解极验滑动验证码 测试开发社区  1周前 阅读目录 极验滑动验证码 实现 位移移动需要的基础知识 对比两张图片,找出缺口 获得图片 按照位移移动 详细代码 回到顶部 极验滑动验证码 以 ...

  8. 查询优化基础知识 - chendh blog

    概述 处理一个给定的查询,尤其是复杂查询,通常会有许多种策略,查询优化就是从这许多策略中找出最有效的查询执行计划的处理过程. 查询执行计划的步骤 产生逻辑上与给定表达式等价的表达式: 估计每个执行计划 ...

  9. insert时出现主键冲突的处理方法

    使用"insert into"语句进行数据库操作时可能遇到主键冲突,用户需要根据应用场景进行忽略或者覆盖等操作.总结下,有三种解决方案来避免出错. 测试表:CREATE TABLE ...

  10. C++扬帆远航——13(个人所得税计算器)

    /* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:shui.cpp * 作者:常轩 * 微信公众号:Worldhe ...