itsource

MongoDB - 관리자 사용자에게 권한이 없습니다.

mycopycode 2023. 3. 23. 22:43
반응형

MongoDB - 관리자 사용자에게 권한이 없습니다.

MongoDB mong mong mong mong 。
MongoDB 2.6.1은 Linux입니다.
mongod.conf 입니다.
(본명: ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.

1) (3)의 설명에 따라 admin 사용자를 작성했습니다.

http://docs.mongodb.org/manual/tutorial/add-user-administrator/

2) 이 행을 주석 해제하여 mongod.conf를 편집했습니다.

auth = true

3) 마지막으로 mongod 서비스를 재부팅하여 로그인을 시도했습니다.

/usr/bin/mongo localhost:27017/admin -u sa -p pwd

4) 접속할 수 있는데 접속할 때 이렇게 표시됩니다.

MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }

) 이 5가 된 것 sa생성한 사용자에게 권한이 전혀 없습니다.

root@test02:~# mc
MongoDB shell version: 2.6.1
connecting to: localhost:27017/admin
Welcome to the MongoDB shell!
The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT)
Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
[admin] 2014-05-29 17:57:03.011 >>> use admin
switched to db admin
[admin] 2014-05-29 17:57:07.889 >>> show collections
2014-05-29T17:57:10.377-0400 error: {
        "$err" : "not authorized for query on admin.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[admin] 2014-05-29 17:57:10.378 >>> use test
switched to db test
[test] 2014-05-29 17:57:13.466 >>> show collections
2014-05-29T17:57:15.930-0400 error: {
        "$err" : "not authorized for query on test.system.namespaces",
        "code" : 13
} at src/mongo/shell/query.js:131
[test] 2014-05-29 17:57:15.931 >>>

하고 3번 반복했습니다.
MongoDB 문서에 명시된 대로 모든 작업을 수행했다고 생각합니다.하지만 효과가 없어요.
sa가 어떤 을 할 수 됩니다.
그런 다음 다른 사용자를 생성하여 보다 구체적인 권한을 부여할 수 있습니다.

저도 같은 문제에 대해 고민하고 있었습니다.첫 번째 admin 사용자를 추가할 때 역할을 root로 설정한 후에는 모든 것이 잘 되었습니다.

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

「 」가 되어 있는 admin사용자는 다음과 같이 역할을 변경할 수 있습니다.

use admin;
db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])

전체 인증 설정 참조는 인터넷을 통해 몇 시간 동안 조사한 후 작성한 단계를 참조하십시오.

좀 헷갈리네요.데이터베이스에 문의하려면 readWrite를 허가해야 할 것 같습니다.dbadmin 또는 useradmin을 가진 사용자는 데이터베이스 관리(추가 권한 부여 포함)는 가능하지만 쿼리를 수행하거나 데이터를 쓸 수 없습니다.

그러니 자신에게 readWrite를 허락하면 괜찮을 거야 -

http://docs.mongodb.org/manual/reference/built-in-roles/ #readWrite

현재 사용자를 변경하는 방법에 대한 간단한 예가 도움이 될 수 있습니다.이게 바로 내가 찾던 거야

@JohnPetrone의 조언에 따라 grantRolesToUser를 사용하여 관리자 사용자에게 readWrite 역할을 추가했습니다.

> use admin
> db.grantRolesToUser("admin",["readWrite"])
> show collections
system.users
system.version

시도해 보십시오. --authenticationDatabase 플래그를 사용하면 도움이 됩니다.

mongo --port 27017 -u "admin" -p "password" --authenticationDatabase "admin"

이 부분에서 이 답변이 매우 늦게 오는 것을 알지만, 나는 여러분이 그것을 확인해 주길 바란다.

과 그 에게 부여한 .root그럼 문제가 해결되지만 사용자에게 권한을 부여하기 전에 이들 역할이 정확히 어떤 역할을 하는지 이해해야 합니다.

에게 「」를 했습니다.userAdminAnyDatabase기본적으로 사용자에게 모든 데이터베이스의 사용자를 관리할 수 있는 권한을 부여합니다.사용자에게 하려던 작업이 역할 정의 범위를 벗어났습니다.

root에는 이 역할의 정의가 포함되어 .readWriteAnyDatabase,dbAdminAnyDatabase슈퍼 유저로 하는 다른 역할도 있습니다(사용자가 무엇이든 할 수 있기 때문에 필요).

역할 정의를 확인하여 특정 작업을 완료하기 위해 사용자에게 제공해야 하는 역할을 확인할 수 있습니다.https://docs.mongodb.com/manual/reference/built-in-roles/ 모든 사용자를 슈퍼 사용자로 만드는 것은 권장되지 않습니다.

간단한 질문입니다.

  1. 대상 DB를 관리자가 아니라 전환해야 합니다.

사용방법DB

  1. db 인증 확인 기준

show users(사용자 표시)

  1. {}개의 빈 개체가 표시되는 경우 이것이 질문입니다.입력만 하면 됩니다.

db.createUser({사용자: "yourUser", pwd: "password", 역할: ["readWrite", "dbAdmin"] } )

또는

db.grantRolesToUser('yourUser', {역할: "dbAdmin", db: "yourDB"})

MongoDB Compass의 호스트명이 프로젝트용으로 admin을 가리키고 있었기 때문에 이 문제가 발생하였습니다.호스트명 뒤에 /projectname을 추가하여 수정:) 다음을 시도합니다.

  1. MongoDB 지도책 웹사이트에서 프로젝트를 선택합니다.
  2. MongoDB 나침반으로 연결/연결
  3. 나침반 다운로드 / OS 선택
  4. 나침반 1.12 이후 사용
  5. 연결 문자열을 나침반 1.12 이상 아래에 복사합니다.
  6. MongoDB 나침반/연결(왼쪽 위)/연결처 열기
  7. 연결 문자열이 검색됨/예/
  8. 호스트명 뒤에 프로젝트명을 추가합니다.cluster9-foodie.mongodb.net/projectname
  9. POSTMAN을 사용하여 API를 연결하고 테스트했습니다.
  10. 성공하다.

코드에도 같은 접속 문자열을 사용합니다.

  1. ★★★★
    • mongodb+srv://projectname: password@cluster9-foodie.mongodb.net/admin
  2. ★★★★★★★★★★★★★★★★★★:
    • mongodb+srv://projectname: password@cluster9-foodie.mongodb.net/projectname

행운을 빌어요.

Use Admin :
    use admin

Create a super user : 

    db.createUser(
    {
    user: "master",
    pwd: "test@123",
    roles: [ 
    { 
    role: "readWriteAnyDatabase", 
    db: "admin" 
    }, 
    {
    "role" : "dbAdminAnyDatabase",
    "db" : "admin"
    },
    {
    "role" : "clusterAdmin",
    "db" : "admin"
    },
    "userAdminAnyDatabase" 
    ]
    }
    )

Atlas를 사용하는 경우 mongo 쉘을 통해 사용자를 생성할 수 없습니다.

한동안 벽에 머리를 부딪히다가 이걸 발견했어요. https://www.mongodb.com/community/forums/t/cant-create-a-root-user-from-mongo-shell/101369

비슷한 문제로 이 스레드를 발견했는데 데이터베이스 이름 대신 컬렉션 이름을 사용하는 것이 문제였습니다.

여기 Windows 환경에서도 같은 문제가 발생했습니다.Bitnami Dream Factory를 설치하고 시스템 부팅 시 부팅되는 다른 MongoDb도 설치합니다.MongoDbService(오류 없이 시작)를 실행하고 있었는데, 실제로 Bitnami의 MongoDbService에 접속하고 있다는 것을 알게 되었습니다.서버에서 실행 중인 다른 mongoDB 인스턴스가 없는지 확인하십시오.

행운을 빕니다.

쉘 가 mongo에 올바르게 할 수 해 주십시오.mongod허가 거부하다

하고, 하고 있는 것 에, 에서 가 접속되어 있는 것을 .mongod사용하지 않습니다.할 수 .--port <port>과 process의 양쪽 합니다.

mydb
", "db.createUser({사용자: "test", pwd: "secret", "dbAdmin", "Digestor")

admin db에 대한 인증을 받아야 하며 DB에서 로컬호스트 예외(mongoDB의 온프레미스 호스트용)를 피하기 위해 최소한 올바른 권한을 가진 역할이 필요하다는 데 동의합니다.다만, 모든 것이 갖추어져 있고, 아직 거의 모든 명령어에 대해 허가된 예외는 없습니다.Mongo Atlas를 사용하여 작성된 mongoDB에 접속할 때, 그 이유를 알 수 있는 장소를 다음에 나타냅니다.

https://dba.stackexchange.com/questions/219003/not-authorized-on-admin-to-execute-command-mongodb-atlas-m0-free-tier-cluster?newreg=471a9a26108243d78d4ca74a87e7a115

mongo Atlas에서 mongoDB를 호스팅하고 있는 경우 다음 사항을 체크합니다.

https://docs.atlas.mongodb.com/unsupported-commands/

Centos 7 for MongoDB 4.2에서 다음 절차를 수행했습니다.(리모트 사용자)

mongod.conf 파일 업데이트

vi /etc/mongod.conf
   net:
     port: 27017
     bindIp: 0.0.0.0 
   security:
     authorization: enabled

MongoDB 서비스 데몬 시작

systemctl start mongod

MongoDB 쉘 열기

mongo

셸에서 이 명령어를 실행합니다.

use admin
db.createUser(
  {
    user: 'admin',
    pwd: 'YouPassforUser',
    roles: [ { role: 'root', db: 'admin' } ]
  }
);

원격 루트 사용자가 생성되었습니다.이제 개발 머신의 MongoDB GUI 도구를 사용하여 이 데이터베이스 연결을 테스트할 수 있습니다.Robo 3T처럼

MongoDB 버전 4.2.8의 경우 auth를 사용하여 데이터베이스를 백업하기 위해 여러 가지 방법을 시도해 보았습니다.이러한 솔루션은 다음과 같습니다.

mongodump -h <your_hostname> -d <your_db_name> -u <your_db_username> -p <your_db_password> --authenticationDatabase admin -o /path/to/where/i/want

이는 mongodb.conf에서 noAuth=true를 설정하지 않았기 때문일 수 있습니다.

# Turn on/off security.  Off is currently the default
noauth = true
#auth = true

이 설정을 마친 후 다음을 사용하여 서비스를 재시작합니다.

서비스 mongod 재시작

언급URL : https://stackoverflow.com/questions/23943651/mongodb-admin-user-not-authorized

반응형