사용자 이름과 비밀번호로 MongoDB를 보호하는 방법
원격 액세스가 사용자 이름 및 비밀번호를 요청하도록 MongoDB 인스턴스에 대한 사용자 이름 및 비밀번호 인증을 설정하고 싶습니다. MongoDB 사이트에서 튜토리얼을 시도하고 다음을 수행했습니다.
use admin
db.addUser('theadmin', '12345');
db.auth('theadmin','12345');
그 후, 나는 나가서 몽고를 다시 달렸다. 그리고 액세스하기 위해 비밀번호가 필요하지 않습니다. 데이터베이스에 원격으로 연결하더라도 사용자 이름 및 비밀번호를 묻는 메시지가 표시되지 않습니다.
업데이트 여기에 내가 사용한 해결책이 있습니다.
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
.
당신은 시작해야 mongod
와 --auth
사용자를 설정 한 후 옵션을 선택합니다.
MongoDB 사이트에서 :
--auth
보안을 활성화 하는 옵션으로 데이터베이스 (mongod 프로세스)를 실행하십시오 . 로 서버를 시작하기 전에 admin db에 사용자를--auth
추가했거나 localhost 인터페이스에서 첫 번째 사용자를 추가해야합니다.
와우 너무 복잡하고 혼란스러운 답변이 여기에 있습니다.
이것은 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) 사용자 관리자를 작성하십시오. 다음은 admin
인증 데이터베이스 에 사용자 관리자를 작성 합니다. 사용자는 데이터베이스 dbOwner
가 아니라 some_db
데이터베이스가 아니라 admin
기억해야합니다.
use admin
db.createUser(
{
user: "myDbOwner",
pwd: "abc123",
roles: [ { role: "dbOwner", db: "some_db" } ]
}
)
또는 모든 데이터베이스에서 관리자 인 관리자를 작성하려면 다음을 수행하십시오.
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
4) MongoDB 인스턴스를 중지하고 액세스 제어로 다시 시작하십시오.
mongod --auth --dbpath /data/db
5) admin
인증 데이터베이스가 아닌 인증 데이터베이스에 대한 사용자 관리자로 연결하고 인증하십시오 some_db
. 사용자 관리자가 admin
인증 데이터베이스 에서 작성되었으며 사용자가 some_db
인증 데이터베이스에 없습니다.
use admin
db.auth("myDbOwner", "abc123")
이제 데이터베이스 dbOwner
이상으로 인증되었습니다 some_db
. 이제 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) mongo 셸을 종료하고 다시 연결하고 사용자로 인증하십시오.
use some_db
db.auth("myNormalUser", "xyz123")
db.foo.insert({x:1})
use some_other_db
db.foo.find({})
먼저 #auth=true
mongod 구성 파일에서 시작하는 행의 주석을 해제 하십시오 (기본 경로 /etc/mongo.conf
). mongodb에 대한 인증이 가능합니다.
그런 다음 mongodb를 다시 시작하십시오. sudo service mongod restart
이 답변은 몽고 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
다음은 사용자를 추가하는 자바 스크립트 코드입니다.
시작
mongod
과 함께--auth = true
mongo shell에서 관리자 데이터베이스에 액세스하고 javascript 파일을 전달하십시오.
몽고 관리자 "Filename.js"
"Filename.js"
// Adding admin user db.addUser("admin_username", " admin_password"); // Authenticate admin user db.auth("admin_username ", " admin_password "); // use database code from java script db = db.getSiblingDB("newDatabase"); // Adding newDatabase database user db.addUser("database_username ", " database_ password ");
이제 사용자 추가가 완료되었습니다. mongo 셸에서 데이터베이스 액세스를 확인할 수 있습니다
https://docs.mongodb.com/manual/reference/configuration-options/#security.authorization
몽고 설정 파일을 편집하십시오.
sudo nano /etc/mongod.conf
라인을 추가하십시오 :
security.authorization : enabled
서비스를 다시 시작하십시오
sudo service mongod restart
문안 인사
먼저 터미널에서 mongoDB를 실행하여
mongod
이제 mongo shell use 다음 명령을 실행하십시오.
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/
데이터베이스 액세스를 보호하기 위해 특정 데이터베이스의 비밀번호로 사용자 작성 :
use dbName
db.createUser(
{
user: "dbUser",
pwd: "dbPassword",
roles: [ "readWrite", "dbAdmin" ]
}
)
사용자가 원하는 데이터베이스 (관리자 데이터베이스가 아님)로 전환해야합니다.
use mydatabase
자세한 내용은이 게시물을 참조하십시오 ... https://web.archive.org/web/20140316031938/http://learnmongo.com/posts/quick-tip-mongodb-users/
아래 단계를 순서대로 수행하십시오.
- CLI를 사용하여 사용자 작성
use admin
db.createUser(
{
user: "admin",
pwd: "admin123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
- 인증을 사용하면 OS에 따라 다릅니다 .Windows 를 사용
mongod --auth
하는 경우 Linux의 경우/etc/mongod.conf
파일을 편집security.authorization : enabled
하여 mongd 서비스 를 추가 한 다음 다시 시작할 수 있습니다 - cli를 통해 연결
mongo -u "admin" -p "admin123" --authenticationDatabase "admin"
합니다. 그게 다야
이 게시물 을 확인 하여 자세한 내용을 확인하고 몽구스를 사용하여 연결하는 방법을 배울 수 있습니다.
이 단계는 저에게 효과적이었습니다.
- cmd에 mongod --port 27017을 작성하십시오.
- 그런 다음 mongo shell에 연결하십시오 : mongo --port 27017
- 사용자 admin 작성 : use admin db.createUser ({사용자 : "myUserAdmin", pwd : "abc123", 역할 : [{role : "userAdminAnyDatabase", db : "admin"}]})
- 몽고 껍질 분리
- mongodb를 다시 시작하십시오. mongod --auth --port 27017
- mongo 쉘 시작 : mongo --port 27017 -u "myUserAdmin"-p "abc123"--authenticationDatabase "admin"
- 연결 후 인증하려면 mongo 쉘을 mongod에 연결하십시오. mongo --port 27017
- 인증 데이터베이스로 전환하십시오 : admin db.auth ( "myUserAdmin", "abc123"사용)
새 사용자를 만든 후에 grant
read/write/root
는 사용자 에게 권한을 부여하는 것을 잊지 마십시오 . 당신은 시도 할 수 있습니다
cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])
다음과 같이 mongoDB에 연결하는 가장 좋은 방법은 다음과 같습니다.
초기 설치 후
use admin
그런 다음 다음 스크립트를 실행하여 관리자를 작성하십시오.
db.createUser( { user: "YourUserName", pwd: "YourPassword", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "clusterAdmin", db: "admin" } ] })
다음 스크립트는 DB의 관리자를 만듭니다.
다음을 사용하여 db.admin에 로그인하십시오.
mongo -u YourUserName -p YourPassword admin
로그인 후 1-3을 반복하여 동일한 관리 자격 증명으로 다른 N 개의 데이터베이스를 작성할 수 있습니다.
이를 통해 MongoDB에서 생성 한 다른 콜렉션에 대해 다른 사용자 및 비밀번호를 작성할 수 있습니다.
이것이 우분투 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
변경할 수 있습니다 /etc/mongod.conf
.
전에
#security:
후
security:
authorization: "enabled"
그때 sudo service mongod restart
참고 URL : https://stackoverflow.com/questions/4881208/how-to-secure-mongodb-with-username-and-password
'Programing' 카테고리의 다른 글
datetime2 데이터 유형을 datetime 데이터 유형으로 변환하면 범위를 벗어난 값 (0) | 2020.03.01 |
---|---|
UITableView didSelectRowAtIndexPath : 첫 번째 탭에서 호출되지 않음 (0) | 2020.03.01 |
배열 붕괴 란 무엇입니까? (0) | 2020.03.01 |
브라우저 쿠키 도메인은 어떻게 작동합니까? (0) | 2020.03.01 |
A4 용지 크기 페이지에서 HTML 페이지를 만드는 방법은 무엇입니까? (0) | 2020.03.01 |