복붙노트

[MONGODB] 사용자 이름과 암호를 사용하여 MongoDB를 확보하는 방법

MONGODB

사용자 이름과 암호를 사용하여 MongoDB를 확보하는 방법

나는 어떤 원격 액세스는 사용자 이름 및 암호를 요청할 수 있도록, 내 MongoDB의 인스턴스에 대한 사용자 이름 및 암호 인증을 설정합니다. 나는 MongoDB의 사이트에서 튜토리얼을 시도하고 다음했다 :

use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');

그 후, 나는 종료 및 RAN은 다시 몽고. 그리고 나는 그것을 액세스하기 위해 암호를 입력 할 필요가 없습니다. 내가 원격으로 데이터베이스에 연결하더라도, 나는 사용자 이름 및 암호를 입력하라는 메시지가 아닙니다.

UPDATE는 여기에 내가 사용하여 종료 된 솔루션입니다

1) At the mongo command line, set the administrator:

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

2) Shutdown the server and exit

    db.shutdownServer();
    exit

3) Restart mongod with --auth

  $ sudo ./mongodb/bin/mongod --auth --dbpath /mnt/db/

4) Run mongo again in 2 ways:

   i) run mongo first then login:

        $ ./mongodb/bin/mongo localhost:27017
        use admin
        db.auth('admin','123456');

  ii) run & login to mongo in command line.

        $ ./mongodb/bin/mongo localhost:27017/admin -u admin -p 123456

사용자 이름 및 암호는 mongodump 및 mongoexport에 대해 동일한 방식으로 작동합니다.

해결법

  1. ==============================

    1.당신은 사용자가 설정 한 후 --auth 옵션을 mongod 시작해야합니다.

    당신은 사용자가 설정 한 후 --auth 옵션을 mongod 시작해야합니다.

    MongoDB의 사이트에서 :

    MongoDB를 인증

  2. ==============================

    2.와우 복잡 많은 / 여기에 답변을 혼란.

    와우 복잡 많은 / 여기에 답변을 혼란.

    이는 V3.4의로이다.

    1) 액세스 제어없이 시작하여 MongoDB.

    mongod --dbpath /data/db
    

    2) 인스턴스에 연결합니다.

    mongo
    

    3) 사용자를 만듭니다.

    use some_db
    db.createUser(
      {
        user: "myNormalUser",
        pwd: "xyz123",
        roles: [ { role: "readWrite", db: "some_db" },
                 { role: "read", db: "some_other_db" } ]
      }
    )
    

    4) MongoDB의 인스턴스를 중지 및 액세스 제어 다시 시작합니다.

    mongod --auth --dbpath /data/db
    

    5)에 연결하고 사용자로 인증.

    use some_db
    db.auth("myNormalUser", "xyz123")
    db.foo.insert({x:1})
    use some_other_db
    db.foo.find({})
    

    정말 간단합니다. 나는 바보를 다음과 같은 것입니다 https://docs.mongodb.com/manual/tutorial/enable-authentication/

    이 역할은 실제로 자세한 내용은 여기를 읽어 않는 것에 대해 더 배우고 싶다면 : https://docs.mongodb.com/manual/reference/built-in-roles/

    1) 액세스 제어없이 시작하여 MongoDB.

    mongod --dbpath /data/db
    

    2) 인스턴스에 연결합니다.

    mongo
    

    3) 사용자 관리자를 작성합니다. 다음은 관리자 인증 데이터베이스의 사용자 관리자를 작성합니다. 사용자는 some_db 데이터베이스를 통해 dbOwner이며 NOT 관리자 데이터베이스를 통해이 기억하는 것이 중요합니다.

    use admin
    db.createUser(
      {
        user: "myDbOwner",
        pwd: "abc123",
        roles: [ { role: "dbOwner", db: "some_db" } ]
      }
    )
    

    아니면 데이터베이스를 통해 admin이고 관리자를 만들려면 :

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

    4) MongoDB의 인스턴스를 중지 및 액세스 제어 다시 시작합니다.

    mongod --auth --dbpath /data/db
    

    5) 연결 아닌, some_db 인증 데이터베이스에 대한 관리자 인증 데이터베이스에 대한 사용자 관리자로 인증 한. 사용자 관리자가 관리자 인증 데이터베이스에서 만든, 사용자는 some_db 인증 데이터베이스에 존재하지 않습니다.

    use admin
    db.auth("myDbOwner", "abc123")
    

    이제 some_db 데이터베이스를 통해 dbOwner으로 인증됩니다. 당신이 읽기 / 쓰기하고자하는 경우 그래서 지금 / 당신이 그것에 변경할 수 some_db 데이터베이스으로 직접 물건을한다.

    use some_db
    //...do stuff like db.foo.insert({x:1})
    // remember that the user administrator had dbOwner rights so the user may write/read, if you create a user with userAdmin they will not be able to read/write for example.
    

    더 많은 역할에 대한 : https://docs.mongodb.com/manual/reference/built-in-roles/

    당신은 사용자가 아닌 관리자하고있는 추가 사용자를 확인하려면 단지 일반 사용자는 아래 계속 읽기.

    6) 일반 사용자를 만듭니다. 이 사용자는 아래로 아래 some_db 인증 데이터베이스에 작성됩니다.

    use some_db
    db.createUser(
      {
        user: "myNormalUser",
        pwd: "xyz123",
        roles: [ { role: "readWrite", db: "some_db" },
                 { role: "read", db: "some_other_db" } ]
      }
    )
    

    7) 사용자로 몽고 쉘, 재접속, 인증하고 종료.

    use some_db
    db.auth("myNormalUser", "xyz123")
    db.foo.insert({x:1})
    use some_other_db
    db.foo.find({})
    
  3. ==============================

    3.먼저, 선을 유엔의 주석 당신의 MongoDB의 구성 파일 (기본 경로 /etc/mongod.conf)에서 # 인증 = 사실과 함께 시작됩니다. 이 MongoDB에 대한 인증을 가능하게 할 것이다.

    먼저, 선을 유엔의 주석 당신의 MongoDB의 구성 파일 (기본 경로 /etc/mongod.conf)에서 # 인증 = 사실과 함께 시작됩니다. 이 MongoDB에 대한 인증을 가능하게 할 것이다.

    그런 다음 다시 시작하여 MongoDB : sudo는 서비스 mongod 다시 시작

  4. ==============================

    4.이 답변은 몽고 3.2.1입니다 참고

    이 답변은 몽고 3.2.1입니다 참고

    터미널 1:

    $ mongod --auth
    

    터미널 2:

    db.createUser({user:"admin_name", pwd:"1234",roles:["readWrite","dbAdmin"]})
    

    당신은 (선택 사항) 역할없이 추가하려는 경우 :

    db.createUser({user:"admin_name", pwd:"1234", roles:[]})
    

    인증 아닌지 확인합니다 :

    db.auth("admin_name", "1234")
    

    그것은 당신을 제공해야합니다 :

    1
    

    다른 사람 :

    Error: Authentication failed.
    0
    
  5. ==============================

    5.여기에 사용자를 추가 할 수있는 자바 스크립트 코드입니다.

    여기에 사용자를 추가 할 수있는 자바 스크립트 코드입니다.

  6. ==============================

    6.https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization

    https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization

    편집 몽고 설정 파일;

    sudo nano /etc/mongod.conf
    

    라인을 추가 :

    security.authorization : enabled
    

    서비스를 다시 시작

    sudo service mongod restart
    

    문안 인사

  7. ==============================

    7.먼저 사용하여 터미널에서 MongoDB를 실행

    먼저 사용하여 터미널에서 MongoDB를 실행

    mongod
    

    이제 명령을 다음과 몽고 쉘 사용을 실행

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

    액세스 제어와 MongoDB의 인스턴스를 다시 시작합니다.

    mongod --auth
    

    이제 사용하여 명령 줄에서 자신을 인증

    mongo --port 27017 -u "myUserAdmin" -p "abc123" --authenticationDatabase "admin"
    

    나는에서 읽어

    https://docs.mongodb.com/manual/tutorial/enable-authentication/

  8. ==============================

    8.보안 데이터베이스 액세스에 대한 특정 데이터베이스에 대한 암호로 사용자 생성 :

    보안 데이터베이스 액세스에 대한 특정 데이터베이스에 대한 암호로 사용자 생성 :

    use dbName
    
    db.createUser(
       {
         user: "dbUser",
         pwd: "dbPassword",
         roles: [ "readWrite", "dbAdmin" ]
       }
    )
    
  9. ==============================

    9.당신은 당신의 사용자 (안 관리 DB를) 할 데이터베이스로 전환해야합니다 ...

    당신은 당신의 사용자 (안 관리 DB를) 할 데이터베이스로 전환해야합니다 ...

    사용하여 MyDatabase

    더 많은 도움이 게시물을 참조 ... https://web.archive.org/web/20140316031938/http://learnmongo.com/posts/quick-tip-mongodb-users/

  10. ==============================

    10.

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

    좀 더 세부 사항으로 이동하고 몽구스를 사용하여 연결 학습이 게시물을 확인할 수 있습니다.

  11. ==============================

    11.이 단계는 내게했다 :

    이 단계는 내게했다 :

  12. ==============================

    12.당신은 /etc/mongod.conf 변경 될 수 있습니다.

    당신은 /etc/mongod.conf 변경 될 수 있습니다.

    전에

    #보안:

    security:
        authorization: "enabled"
    

    그런 다음 서비스 mongod를 다시 시작 SUDO

  13. ==============================

    13.새로운 사용자를 생성 한 후, 사용자에게 읽기 / 쓰기 / 루트 권한을 부여하는 것을 잊지 마십시오. 당신은 시도 할 수 있습니다

    새로운 사용자를 생성 한 후, 사용자에게 읽기 / 쓰기 / 루트 권한을 부여하는 것을 잊지 마십시오. 당신은 시도 할 수 있습니다

    명령 : db.grantRolesToUser ( 'yourNewUsername'[{역할 : "루트", dB : "관리자"}])

  14. ==============================

    14.가장 좋은 방법은 다음과 MongoDB를 연결합니다 :

    가장 좋은 방법은 다음과 MongoDB를 연결합니다 :

    다음 스크립트는 DB에 대한 관리 사용자를 작성합니다.

    이것은 당신이 MongoDB를에서 만드는 다른 컬렉션에 대한 다른 사용자와 암호를 만들 수 있습니다

  15. ==============================

    15.이것은 내가 우분투 18.04에 무슨 짓을했는지 있습니다 :

    이것은 내가 우분투 18.04에 무슨 짓을했는지 있습니다 :

    $ sudo apt install mongodb
    $ mongo
    > show dbs
    > use admin
    > db.createUser({  user: "root",  pwd: "rootpw",  roles: [ "root" ]  })  // root user can do anything
    > use lefa
    > db.lefa.save( {name:"test"} )
    > db.lefa.find()
    > show dbs
    > db.createUser({  user: "lefa",  pwd: "lefapw",  roles: [ { role: "dbOwner", db: "lefa" } ]  }) // admin of a db
    > exit
    $ sudo vim /etc/mongodb.conf
    auth = true
    $ sudo systemctl restart mongodb
    $ mongo -u "root" -p "rootpw" --authenticationDatabase  "admin"
    > use admin
    > exit
    $ mongo -u "lefa" -p "lefapw" --authenticationDatabase  "lefa"
    > use lefa
    > exit
    
  16. from https://stackoverflow.com/questions/4881208/how-to-secure-mongodb-with-username-and-password by cc-by-sa and MIT license