zoukankan      html  css  js  c++  java
  • mongodb创建用户密码

    自从接手这个项目以来,真的被坑惨了。测试服的mongodb经常被删,原因是没有设置账户密码,相应的端口也没有限。只要知道连接地址谁都可以删库。这要归功于mongodb的默认机制。就这样竟然度过了两年多,我一来就特么删库。

    以mongo3.4.24为例,首先在mongo.conf中开启认证。还没创建用户密码的可以创建用户了再开启。

    security:
       authorization: enabled

    登录,创建用户并授权,登录用admin库的用户

    普通登录:bin/mongo 127.0.0.1:27017
    认证登录: bin/mongo 127.0.0.1:27017 -u user -p password --authenticationDatabase admin

    查询和删除用户命令

    use admin
    db.system.users.find();
    db.system.users.remove({});

    创建admin的用户,注意admin这个库要给root权限,否则开启权限验证登录一些操作会显示没有权限

    use admin
    db.createUser({ user: "root", pwd: "password", roles:[{role:"root",db: "admin"}]});
    db.auth("root","admin");

    特别注意:mongodb和spring-mongodb默认的认证机制不同,会导致项目中mongo连接不上!
     1、mongodb的认证机制有2种:SCRAM-SHA-1和MONGODB-CR。3.0之后版本默认为:SCRAM-SHA-1;
     2、spring-mongodb默认为:MONGODB-CR,并不支持设置认证方式;

    db.system.version.findOne({"_id":"authSchema"});
    db.system.version.insert({"_id":"authSchema","currentVersion":3})
    db.system.version.update({"_id":"authSchema"},{$set:{"currentVersion":3}})

    创建其他数据库的用户,mongo的每个库的用户是独立的。你有多少个库就要创建多少个用户,即使用户名一样也要。

    use addressbook
    db.createUser({user:"user",pwd:"password",roles:[{role:"readWrite", db:"addressbook"},{role:"dbAdmin",db:"addressbook"},{role:"dbOwner",db:"addressbook"}]});
    db.auth("zaixiudb","password");
    use imRoom
    db.createUser({user:"user",pwd:"password",roles:[{role:"readWrite", db:"imRoom"},{role:"dbAdmin",db:"imRoom"},{role:"dbOwner",db:"imRoom"}]});
    db.auth("zaixiudb","password");

    * 这里要特别注意权限从小到大,如下刚开始从网上copy了这句创建用户。

    db.createUser({user:"user",pwd:"password",roles:[{role:"read", db:"addressbook"},{role:"readWrite", db:"addressbook"},{role:"dbAdmin",db:"addressbook"},{role:"dbOwner",db:"addressbook"}]});

    spring boot老是连接不上,报权限错误Command failed with error 13 (Unauthorized): 'not authorized on imapi to execute command

    mongo compass却可以连接上,原因是springboot项目中有写入操作。因此去掉read权限,readWrite权限生效。

    开启conf中的认证模式,重启启动mongodb生效。

    springboot中的配置

    mongoconfig.uri=mongodb://user:password@127.0.0.1:28018
    mongoconfig.dbName=imapi
    mongoconfig.mapPackage=cn.xyz.mianshi.vo
    mongoconfig.roomDbName=imRoom
    mongoconfig.username=user
    mongoconfig.password=password
    mongoconfig.connectTimeout=20000
    mongoconfig.socketTimeout=20000
    mongoconfig.maxWaitTime=20000
  • 相关阅读:
    UICollectionView的简单使用(一)
    天气预报接口IOS版OC:SmartWeather API中key的计算方法
    IOS下Base64加密
    IOS下DES加密
    IOS的URL中文转码
    CTE Recursion Performance
    走过而立之年的Coder
    iOS多线程编程之锁的理解
    iOS设置PCH文件
    程序员:伤不起的三十岁
  • 原文地址:https://www.cnblogs.com/zeussbook/p/15472820.html
Copyright © 2011-2022 走看看