• Mongodb部署的两种方式


    一、利用Docker部署

    Redis、Mongdb、MySQL等数据库必须开认证策略,以防被人攻击破坏。

    1、Docker版部署

    因早期Mongodb默认不开启认证策略,很多Mongdb数据库被攻击,后期官方对认证策略进行了增强。

    经实际验证MONGO_INITDB_ROOT_USERNAME和MONGO_INITDB_ROOT_PASSWORD这两个参数,只有在Mongodb版本为3.6.20以上才生效,故使用Docker版Mongdb必须要用新版本才行(3.6.20以上)。

    2、 启动命令如下:

     docker run -d  -p 27017:27017 --name mongo_huadong     -e MONGO_INITDB_ROOT_USERNAME=mongoadmin     -e MONGO_INITDB_ROOT_PASSWORD=Yimi@2018 -v 
    /data/mongo_huadong/db:/data/db     mongo:3.6.20
    

    3、 新增用户

    use admin;
    db.createUser( {
     user: "admin",
     pwd: "123456",
     roles: [ {
                "role" : "userAdminAnyDatabase",
                "db" : "admin"
            }, 
            {
                "role" : "readWriteAnyDatabase",
                "db" : "admin"
            }, 
            {
                "role" : "dbAdminAnyDatabase",
                "db" : "admin"
            } ]
    });
    

    4、 验证

    use admin;
    db.auth('admin', '123456')
    

    返回1 即为验证成功

    二、利用YUM安装

    早期的Mongdb开启认证策略比较麻烦:先添加用户,再修改配置文件开启用户认证,再重启mongo服务(或者 添加用户后,用mongod --auth命令启动)。

    鉴于Docker中的进程不能关闭,也就是mongodb没发再容器里重启,所以低版本mongodb不建议用Docker安装

    1、增加yum源

    cat >> /etc/yum.repos.d/mongodb-org-3.2.repo << EOF
    [mongodb-org-3.2]
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc
    EOF
    

    2、安装指定版本Mongdb

    sudo yum install -y mongodb-org-3.2.22 mongodb-org-server-3.2.22 mongodb-org-shell-3.2.22 mongodb-org-mongos-3.2.22 mongodb-org-tools-3.2.22
    

    3、启动

    sudo service mongod start

    4、增加用户

    use admin
    db.createUser(
      {
        user: "admin",
        pwd: "123456",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
    

    5、修改配置文件打开认证

    vim /etc/mongod.conf 
    security:
      authorization: enabled
    

    6、重启Mongdb

    sudo service mongod restart

    7、进行验证

    use admin;
    db.auth('admin', '123456')
    

    返回1 即为验证成功

    8、报错解决

    如果账号密码正确还是认证失败,客户端连接不上,建议观察日志,比如:

    SCRAM-SHA-1 authentication failed ``for` `user1 on finddemo
    

    这是因为 mongodb加入了SCRAM-SHA-1校验方式,需要第三方工具配合进行验证。

    首先关闭认证,修改system.version文档里面的authSchema版本为3,初始安装时候应该是5。

    > use admin 
    switched to db admin 
    >  var schema = db.system.version.findOne({"_id" : "authSchema"}) 
    > schema.currentVersion = 3 
    3 
    > db.system.version.save(schema) 
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })  
    
  • 相关阅读:
    SQL随机排序
    根据经纬度获取所在城市的相关信息以及根据地点城市获取经纬度
    百度收集自动推送脚本——python版
    采集(未测试)
    网页代码测试工具(很有用)
    微信红包源码2020年最新版(完整测试版)
    mvc返回多个结果集,返回多个视图
    计算工龄(mssql标量值函数)
    YZMCMS发布问题以及解决方法
    用输出的方式向页面和js增加引入
  • 原文地址:https://www.cnblogs.com/langdashu/p/13896766.html
Copyright © 2020-2023  润新知