MongoDB 用户名密码登录

MongoDB authentication

MongoDB 默认直接连接,无须身份验证,如果当前机器可以公网访问,且不注意Mongodb 端口(默认 27017)的开放状态,那么Mongodb就会产生安全风险,被利用此配置漏洞,入侵数据库。

容易遭受入侵的环境
开启用户名和密码验证
  1. 终端启动数据库

    //参数默认可以不加,若有自定义参数,才要加上,下同
    mongod --port 27017 --dbpath /data/db1  
    
  2. 连接 mongo后创建用户

    mongo --port 27017
    use admin
    db.createUser(
      {
        user: "adminUser",
        pwd: "adminPass",
        roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
      }
    )
    
  3. 重启 mongod 数据库

    mongod --auth --port 27017 --dbpath /data/db1
    
    
  4. 连接数据库

    mongo --port 27017 -u "adminUser" -p "adminPass" --authenticationDatabase "admin"
    
    mongo --port 27017
        
    use admin
    db.auth("adminUser", "adminPass")
        
    // 输出 1 表示验证成功
    
  5. 创建普通用户

    use foo
        
    db.createUser(
      {
        user: "simpleUser",
        pwd: "simplePass",
        roles: [ { role: "readWrite", db: "foo" },
                 { role: "read", db: "bar" } ]
      }
    )
    
  6. 使用普通用户连接数据库