zoukankan      html  css  js  c++  java
  • 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库对应一个账户密码
        
        

  • 相关阅读:
    最容易被淘汰的八种人
    java基础编程——用两个栈来实现一个队列
    java基础编程——重建二叉树
    java基础——多线程
    java基础编程——链表反转
    java基础——线程池
    java基础——线程
    java基础编程——二维数组中的查找
    网络编程——TCP协议和通信
    网络编程——UDP协议和通信
  • 原文地址:https://www.cnblogs.com/tjp40922/p/12150116.html
Copyright © 2011-2022 走看看