사용자 이름과 비밀번호를 사용하여 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 사이트:
프로세스를 'mongod'로 합니다.
--auth
이치노를 admin db로 시작하기 .--auth
또는 로컬 호스트인터페이스에서 첫 번째 사용자를 추가합니다.
와, 너무 복잡하거나 혼란스러운 답변이 많네요.
이것은 v3.4의 시점입니다.
단답.
한다(「MongoDB」).
/data/db
'db'의 'db'의 'db').mongod --dbpath /data/db
인스턴스에 연결합니다.
mongo
사용자를 만듭니다.
use some_db db.createUser( { user: "myNormalUser", pwd: "xyz123", roles: [ { role: "readWrite", db: "some_db" }, { role: "read", db: "some_other_db" } ] } )
MongoDB 인스턴스를 중지하고 접근컨트롤을 사용하여 다시 시작합니다.
mongod --auth --dbpath /data/db
접속하여 사용자로 인증합니다.
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/ 를 참조해 주십시오.
접근통제 없이 MongoDB를 기동합니다.
mongod --dbpath /data/db
인스턴스에 연결합니다.
mongo
사용자 관리자를 만듭니다.다음으로 인증 데이터베이스에 사용자 관리자를 작성합니다. 사용자는 데이터베이스 위가 아니라 데이터베이스 위입니다.이 점을 기억해야 합니다.
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" } ]
}
)
MongoDB 인스턴스를 중지하고 접근컨트롤을 사용하여 다시 시작합니다.
mongod --auth --dbpath /data/db
합니다.
admin
"" (Not)를 가 아닙니다.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.
역할에 대한 자세한 내용은http://https://docs.mongodb.com/manual/reference/built-in-roles/
사용자 관리자가 아닌 일반 사용자를 추가할 경우 아래 내용을 계속 읽어 보십시오.
일반 사용자를 만듭니다.이 사용자는 아래 인증 데이터베이스에 작성됩니다.
use some_db db.createUser( { user: "myNormalUser", pwd: "xyz123", roles: [ { role: "readWrite", db: "some_db" }, { role: "read", db: "some_other_db" } ] } )
mongo 쉘을 종료하고 다시 연결한 후 사용자로 인증합니다.
use some_db db.auth("myNormalUser", "xyz123") db.foo.insert({x:1}) use some_other_db db.foo.find({})
으로, 가 내가 읽지 않았기 입니다.--auth
flag, "mongoDB"로 설정하지 않을 경우 이 할 수 .
맨 앞에 를 없앱니다.#auth=true
패스 mongod "Mongod " " ) 。/etc/mongod.conf
mongodb 인증이
다음 : 그음음odod mongodb를 다시 시작합니다.sudo service mongod restart
이 답변은 Mongo 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
사용자 추가를 위한 Javascript 코드입니다.
★★
mongod
--auth = true
mongo 쉘에서 관리 데이터베이스에 접속하여 javascript 파일을 전달합니다.
mongo 관리자 "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
mongo 설정 파일을 편집합니다.
sudo nano /etc/mongod.conf
행을 추가합니다.
security.authorization : enabled
서비스를 재시작합니다.
sudo service mongod restart
안부 전해요
수 /etc/mongod.conf
.
전에
#security:
끝나고
security:
authorization: "enabled"
★★★★★★★★★★★★★★★.sudo service mongod restart
를 사용하여 단말기에서 mongoDB를 처음 실행합니다.
mongod
이제 mongo 셸을 실행합니다.다음 명령어를 사용합니다.
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/
Ubuntu 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
데이터베이스 접근을 보호하기 위해 특정 데이터베이스에 대한 암호를 사용하여 사용자 생성:
use dbName
db.createUser(
{
user: "dbUser",
pwd: "dbPassword",
roles: [ "readWrite", "dbAdmin" ]
}
)
다음 단계를 순서대로 수행하십시오.
- CLI를 사용하여 사용자 생성
use admin
db.createUser(
{
user: "admin",
pwd: "admin123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
- 유효하게 OS에 그 를 하고 있는 는, OS 를 간단하게 사용할 수 .
mongod --auth
의 는, 의 합니다./etc/mongod.conf
할security.authorization : enabled
후 mongd 합니다. -
mongo -u "admin" -p "admin123" --authenticationDatabase "admin"
그거야.로로그그그그다다
자세한 내용은 이 게시물을 참조하고 mongoose를 사용한 연결 방법을 배울 수 있습니다.
다음은 ubuntu 20.04 및 mongodb Enterprise 4.4.2에 대해 수행한 작업입니다.
mongo
단말기로.관리 데이터베이스 사용:
use admin
- 새 사용자를 생성하여 원하는 역할을 할당합니다.
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
- 하고 mongo에 합니다.
etc/mongod.conf
:
security:
authorization: enabled
- mongodb 서버 재시작
(임의) 6 입니다.사용자에게 루트 액세스 권한을 부여하려면 다음과 같이 사용자를 작성할 때 루트 액세스를 지정할 수 있습니다.
db.createUser(
{
user: "myUserAdmin",
pwd: passwordPrompt(), // or cleartext password
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]
}
)
또는 다음 명령을 사용하여 사용자 역할을 변경할 수 있습니다.
db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])
은 서로 .--auth
령령 、 플는는는는는 속일속속 。
security:
authorization: enabled
나는 그 측면을 명확히 하고 싶다. 어느 , 자격 는, 「사용자/패스워드」를 할 필요가 .db.createUser
admin
데이터베이스입니다.하게 하는 방법은 credential과 2개의 netable로 하는 .
- 은 전자의 경우
auth
플래그가 적용됩니다. ★★mongod
를 들면, '이렇게 하다' 입니다.usr/bin/mongod --auth
- 커스텀 설정 파일의 경우:이것은 커스텀 설정 파일에 후자의 설정이 존재할 필요가 있는 경우입니다. ★★
mongod
를 들면, '이렇게 하다' 입니다.usr/bin/mongod --config <config file path>
:Mongo 쉘에 접속합니다.mongo -u <user> -p <password> --authenticationDatabase admin
--authenticationDatabase
사용자가 생성된 데이터베이스 이름입니다.에는 ad 른 o mongo 명 ad 음 음 、 mongo 명 음 음 、 음 。mongorestore
,mongodump
(예: the :-u <user> -p <password> --authenticationDatabase admin
상세한 것에 대하여는, https://docs.mongodb.com/manual/tutorial/enable-authentication/ 를 참조해 주세요.
mongoDB에 접속하는 베스트 프랙티스는 다음과 같습니다.
초기 설치 후
use admin
그런 다음 다음 스크립트를 실행하여 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의 admin 사용자를 생성합니다.
db.admin
.mongo -u YourUserName -p YourPassword admin
로그인 후 1 ~3을 반복하여 동일한 관리 credential을 사용하거나 다른 데이터베이스의 N 번호를 작성할 수 있습니다.
이를 통해 MongoDB에서 작성하는 다른 컬렉션에 대해 다른 사용자 및 비밀번호를 생성할 수 있습니다.
다음 단계를 수행했습니다.
- mongod --port 27017을 cmd에 씁니다.
- 다음으로 mongo 쉘에 접속합니다.mongo --port 27017
- 사용자 admin을 만듭니다.admin db.createUser({사용자: "myUserAdmin", pwd: "abc123, 역할: [{역할: "userAdminAnyDatabase", db: "admin" } } )
- 몽고 셸을 분리하다
- mongodb : mongod --auth --port 27017을 재시작합니다.
- start mongo shell : mongo --port 27017 - u "myUserAdmin" -p "abc123" --authentication Database "admin"
- 접속 후 인증하려면 mongo 셸을 mongod에 연결합니다.mongo --port 27017
- 인증 데이터베이스로 전환:admin db.auth("myUserAdmin", "abc123" 사용
사용자가 사용하는 데이터베이스(admin db가 아님)로 전환해야 합니다.
use mydatabase
자세한 내용은 이 게시물을 참조하십시오.https://web.archive.org/web/20140316031938/http://learnmongo.com/posts/quick-tip-mongodb-users/
mongodb 4.4.13 커뮤니티
1. 데이터베이스 사용자 생성
use admin
db.createUser(
{
user: "myUserAdmin",
pwd: "abc123",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
1.2 동작 확인
> db.auth('myUserAdmin','abc123')
< { ok: 1 }
실패하면 얻을 수 있다
> db.auth('myUserAdmin','amongus')
MongoServerError: Authentication failed.
2. /etc/mongod.conf를 변경합니다.
nano /etc/mongod.conf
변경:
#security:
대상:
security:
authorization: enabled
3. mongod 서비스를 재시작합니다.
sudo service mongod restart
이게 나한테 효과가 있었어
사용자 후 꼭 하세요.grant
read/write/root
여러분도 한번 드셔보세요.
cmd: db.grantRolesToUser('yourNewUsername',[{ role: "root", db: "admin" }])
중복되는 답변이 많지만 중요한 사항을 간과하고 있는 것 같습니다.
인증이 올바르게 유효하게 되어 있어도, 유저명/패스워드 없이 Mongo 데이터베이스에 접속할 수 있습니다!
는 like, 음음음음 like like음 like like like execute however 、 like 、 음 、 commands 、 commands 、 commands 、 commands 、 commands 、 commands 、 commands commands 。db.help()
,db.getMongo()
,db.listCommands()
등등.
$ mongo
MongoDB shell version v4.4.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("f662858b-8658-4e33-a735-120e3639c131") }
MongoDB server version: 4.4.3
mongos> db.getMongo()
connection to 127.0.0.1:27017
mongos> db
test
mongos> db.version()
4.4.3
mongos> db.runCommand({connectionStatus : 1})
{
"authInfo" : {
"authenticatedUsers" : [ ],
"authenticatedUserRoles" : [ ]
},
"ok" : 1,
"operationTime" : Timestamp(1618996970, 2),
"$clusterTime" : {
"clusterTime" : Timestamp(1618996970, 2),
"signature" : {
"hash" : BinData(0,"Kre9jvnJvsW+OVCl1QC+eKSBbbY="),
"keyId" : NumberLong("6944343118355365892")
}
}
}
버전 6.0에서 데이터베이스 사용자 이름과 비밀번호를 설정하는 방법을 이미 실행했습니다.
MongoDB 6.0 이상 설치 MongoDB에 데이터베이스 생성(이름에 관계없이)
MongoDB Shell 설치 https://www.mongodb.com/try/download/shell
open cmd
CD C:\Program Files\mongosh
mongosh "mongodb://localhost:param17"
#데이터베이스 이름 사용#
db.createUser({사용자: "xx", pwd: "xx", 역할: [{역할: "readWrite", db: "xx" })
언급URL : https://stackoverflow.com/questions/4881208/how-to-secure-mongodb-with-username-and-password
'programing' 카테고리의 다른 글
ESLint 기본 내보내기 Import/prefer-default-export 선호 (0) | 2023.02.15 |
---|---|
JSON 만드는 법NET String Enum Converter는 하이픈 구분 대소문자를 사용합니다. (0) | 2023.02.15 |
현재 페이지가 wordpress에서 플러그인 관리 패널인지 확인하는 방법 (0) | 2023.02.15 |
왜 GWT일까요?이 RIA Framework를 사용할 경우의 장점과 단점 (0) | 2023.02.15 |
create-react-app을 사용하여 빌드 버전을 실행하는 방법 (0) | 2023.02.15 |