• 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
  • 相关阅读:
    每日英语:Easing Gaokao Restrictions: a New Year's Gift?
    每日英语:Targeting Grandpa: China’s Seniors Hunger for Ads
    每日英语:Eight Questions: Bianca Bosker on China's 'Original Copies' in Architecture
    每日英语:There's No Avoiding Google+
    如何删除控制面板中没有"删除"菜单的程序
    html中利用javascript实现文本框字数的动态计算
    一条批处理语句ping局域网内的所有机器
    javascript中的"+"运算
    在asp.net中使用分帧页面时,ajax control报access denied错误的解决方法
    gridview和repeater中取得行的序号
  • 原文地址:https://www.cnblogs.com/zeussbook/p/15472820.html
Copyright © 2020-2023  润新知