mongo密码的设置

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

 注意:

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

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

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

#先切换
use 数据库名;

#再创建
db.createUser({})

超级管理员

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

use.admin  
db.createUser({
  user: 'admin',  // 用户名
  pwd: '123456',  // 密码
  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', '123456')

// 方式二
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: '654321'})  // 修改用户密码

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

MongoDB 数据库默认角色

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

pymongo连接需要认证的mongo

import pymongo
import random

db_mongo_attr = {
    'host': 'xx.xx.xx.xx',
    'port': 27017,
    'database': 'qidatas',
    'username': 'mts',
    'password': '123456'
}


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


db = db_conn(**db_mongo_attr)
col=db['20200624']

name_list = ['衬衣', '裤子', '鞋子', '帽子']
size_list = ['S', 'M', 'L', 'XL']
price_list = [100, 200, 300, 600, 800]

for i in range(10):
    random_ = random.randint(2, 4)
    col.insert_one({
        'name': random.choice(name_list),
        'size': random.sample(size_list, random_),
        'price': random.sample(price_list, random_)
    })

  要注意的是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库对应一个账户密码
    
    

原文地址:https://www.cnblogs.com/tjp40922/p/12150116.html