๋ฌธ์ ํ โ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ โ MongoDB ๋งค๋ด์ผ
๋ณต์ ๋ณธ ์ธํธ๋ฅผ ํค ํ์ผ ์ธ์ฆ์ผ๋ก ์ ๋ฐ์ดํธ(๋ค์ดํ์ ์์)
์ด ํ์ด์ง์ ๋ด์ฉ
๊ฐ์
๋ฌด๋จ ์ก์ธ์ค๋ก๋ถํฐ ๋ณดํธํ๋ ค๋ฉด ๋ฐฐํฌ์๋ฒ์ ์ธ์ฆ ์ ์ํํ์ธ์. ๋ณต์ ๋ณธ ์ธํธ์ ๋ํ ์ธ์ฆ์ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ ๊ฐ์ ๋ด๋ถ ์ธ์ฆ ๊ณผ ๋ณต์ ๋ณธ ์ธํธ์ ์ฐ๊ฒฐํ๋ ํด๋ผ์ด์ธํธ์ ๋ํ ์ฌ์ฉ์ ์ก์ธ์ค ์ ์ด ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ฐฐํฌ์๋ฒ์์ ํ์ฌ ์ธ์ฆ์ ์ ์ฉํ์ง ์๋ ๊ฒฝ์ฐ --transitionToAuth
์ต์
์ ์ฌ์ฉํ์ฌ ๋ค์ดํ์ ์์ด ์ธ์ฆ์ ์ ์ฉํ ์ ์์ต๋๋ค.
๋ฒ์ 3.4์ ์๋ก ์ถ๊ฐ๋จ : MongoDB 3.2 ์ดํ ๋ฒ์ ์ ์ธ์ฆ ์ํ์ ์ํ ๋ค์ดํ์ ์๋ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ๊ธฐ์กด MongoDB 3.2 ๋ณต์ ๋ณธ ์ธํธ์์ ์ธ์ฆ์ ์ํํ๋ ค๋ฉด ํค ํ์ผ ์ธ์ฆ์ผ๋ก ๋ณต์ ๋ณธ ์ธํธ ์ ๋ฐ์ดํธ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด ํํ ๋ฆฌ์ผ์์๋ ๋ด๋ถ ๋ณด์์ ์ํด ํคํ์ผ ๋ด๋ถ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๊ณ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ์ํด SCRAM๊ธฐ๋ฐ ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํด๋ผ์ฐ๋ ๊ด๋ฆฌ์ ๋ฐ ์ด์ ๊ด๋ฆฌ์
Cloud Manager ๋๋ Ops Manager๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ ์ธ์ฆ์ ์ํํ๋ ค๋ฉด ํด๋น Cloud Manager ๋งค๋ด์ผ ๋๋ Ops Manager ๋งค๋ด์ผ ์ ์ฐธ์กฐํ์ธ์.
์ํคํ ์ฒ
์ด ํํ ๋ฆฌ์ผ์์๋ ๊ธฐ์กด ํ๋ผ์ด๋จธ๋ฆฌ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ๋ฅผ ๋ฌผ๋ฌ๋๊ฒ ํ ํ ๋ณต์ ๋ณธ ์ธํธ๊ฐ ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฅผ ์ ์ถํ ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ค์์ด ํ์ํฉ๋๋ค.
๋๋ค์์ ํฌํ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ๋ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๋ฌผ๋ฌ๋ ํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ง์ฐ , ์๋ ๋๋ ์ฐ์ ์์ 0 ์ด ์๋ ํ๋ ์ด์์ ์ธ์ปจ๋๋ฆฌ ๋ฉค๋ฒ์ ๋๋ค.
์ ํ ์ํ
mongod
๋ก ์คํ๋๋ ๋ ์ธ์ฆ๋ ์ฐ๊ฒฐ๊ณผ ์ธ์ฆ๋์ง ์์ ์ฐ๊ฒฐ์ ๋ชจ๋ --transitionToAuth
ํ์ฉํฉ๋๋ค. ์ด ์ ํ ์ํ ๋์ mongod
์ ์ฐ๊ฒฐ๋ ํด๋ผ์ด์ธํธ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฝ๊ธฐ, ์ฐ๊ธฐ ๋ฐ ๊ด๋ฆฌ ์์
์ ์ํํ ์ ์์ต๋๋ค.
ํด๋ผ์ด์ธํธ ์ก์ธ์ค
๋ค์ ์ ์ฐจ๊ฐ ๋๋๋ฉด ๋ณต์ ๋ณธ ์ธํธ๋ ์ธ์ฆ๋์ง ์์ ์ฐ๊ฒฐ์ ์๋ํ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค. ์ด ์ ์ฐจ์์๋ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ณต์ ๋ณธ ์ธํธ์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํ ์ฌ์ฉ์ ๋ฅผ ์์ฑํฉ๋๋ค.
์ฌ์ฉ์ ์์ฑ ๋ฐ ๊ด๋ฆฌ ๋ชจ๋ฒ ์ฌ๋ก๋ โค ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
IP ๋ฐ์ธ๋ฉ
2} ๋ฐmongod
mongos
MongoDB localhost
๋ฐ์ด๋๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋ฐ์ธ๋ฉ๋ฉ๋๋ค.
๋น๋ฐ๋ฒํธ
์ค์
์์คํ ๋ณด์์ ๋ณด์ฅํ๊ณ ์ ์์ ์ธ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ๊ฑฐ๋ ์ง์ฐํ๋ ค๋ฉด ์ํธ๋ ์์์ ์ด๊ณ ๊ธธ๋ฉฐ ๋ณต์กํด์ผ ํฉ๋๋ค.
๊ธฐ์กด ๋ณต์ ๋ณธ ์ธํธ์ ํค ํ์ผ ์ก์ธ์ค ์ ์ด ์ ์ฉ
์ค์
๋ณ๊ฒฝ๋ IP ์ฃผ์๋ก ์ธํด ๊ตฌ์ฑ์ด ์ ๋ฐ์ดํธ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ค๋ฉด IP ์ฃผ์ ๋์ DNS ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ์ธ์. ํนํ ๋ณต์ ๋ณธ ์ธํธ ๊ตฌ์ฑ์ ๋๋ ์ค๋ ํด๋ฌ์คํฐ ๊ตฌ์ฑ์์ ๊ตฌ์ฑํ ๋ IP ์ฃผ์ ๋์ DNS ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
IP ์ฃผ์ ๋์ ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ๋ถํ ๋ ๋คํธ์ํฌ ๋ฒ์์ ๊ฑธ์ณ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. MongoDB 5 ๋ถํฐ ์์.0, IP ์ฃผ์๋ก๋ง ๊ตฌ์ฑ๋ ๋ ธ๋๋ ์์ ์ ํจ์ฑ ๊ฒ์ฌ์ ์คํจํ์ฌ ์์๋์ง ์์ต๋๋ค.
์ฌ์ฉ์ ๊ด๋ฆฌ์๋ฅผ ๋ง๋ญ๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ ์ ์ฐ๊ฒฐํ์ฌ userAdminAnyDatabase
์ญํ ์ ๊ฐ์ง ์ฌ์ฉ์๋ฅผ ๋ง๋ญ๋๋ค. userAdminAnyDatabase
์ญํ ์ ๋ฐฐํฌ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ์ ์์ฑ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
๋ค์ ์์์๋ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ userAdminAnyDatabase
์ญํ ์ ๊ฐ์ง fred
์ฌ์ฉ์๋ฅผ ๋ง๋ญ๋๋ค.
์ค์
์์คํ ๋ณด์์ ๋ณด์ฅํ๊ณ ์ ์์ ์ธ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ๊ฑฐ๋ ์ง์ฐํ๋ ค๋ฉด ์ํธ๋ ์์์ ์ด๊ณ ๊ธธ๋ฉฐ ๋ณต์กํด์ผ ํฉ๋๋ค.
ํ
mongo
shell ๋ฒ์ 4.2๋ถํฐ ๋ฉ์๋/๋ช
๋ น ํธ์ถ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ๋ ๋์ passwordPrompt()
๋ฉ์๋๋ฅผ ๋ค์ํ ์ฌ์ฉ์ ์ธ์ฆ/๊ด๋ฆฌ ๋ฉ์๋/๋ช
๋ น๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฒ์ ์ mongo
shell์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ ์ ์์ต๋๋ค.
admin = db.getSiblingDB("admin") admin.createUser( { user: "fred", pwd: " passwordPrompt(), // or cleartext password roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] } )
์ด ์ ์ฐจ๊ฐ ์๋ฃ๋๋ฉด ๋ณต์ ๋ณธ ์ธํธ์ ์ฌ์ฉ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ ์ด ์ฌ์ฉ์ ๋๋ ์ ์ฌํ ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์๋ก ์ธ์ฆํด์ผ ํฉ๋๋ค.
๊ธฐ๋ณธ ์ ๊ณต ์ญํ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์ ๊ณผ ๊ด๋ จ๋ ์ญํ ์ ์ ์ฒด ๋ชฉ๋ก์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ญํ ์์ ํ์ธํ์ธ์.
ํด๋ฌ์คํฐ ๊ด๋ฆฌ์๋ฅผ ๋ง๋ญ๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ ์ ์ฐ๊ฒฐํ์ฌ clusterAdmin
์ญํ ์ ๊ฐ์ง ์ฌ์ฉ์๋ฅผ ๋ง๋ญ๋๋ค. clusterAdmin
์ญํ ์ ๋ณต์ ๋ณธ ์ธํธ ๊ตฌ์ฑ๊ณผ ๊ฐ์ ๋ณต์ ์์
์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
๋ค์ ์์์๋ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ clusterAdmin
์ญํ ์ ๊ฐ์ง ravi
์ฌ์ฉ์๋ฅผ ๋ง๋ญ๋๋ค.
์ค์
์์คํ ๋ณด์์ ๋ณด์ฅํ๊ณ ์ ์์ ์ธ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ๊ฑฐ๋ ์ง์ฐํ๋ ค๋ฉด ์ํธ๋ ์์์ ์ด๊ณ ๊ธธ๋ฉฐ ๋ณต์กํด์ผ ํฉ๋๋ค.
ํ
mongo
shell ๋ฒ์ 4.2๋ถํฐ ๋ฉ์๋/๋ช
๋ น ํธ์ถ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ๋ ๋์ passwordPrompt()
๋ฉ์๋๋ฅผ ๋ค์ํ ์ฌ์ฉ์ ์ธ์ฆ/๊ด๋ฆฌ ๋ฉ์๋/๋ช
๋ น๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฒ์ ์ mongo
shell์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ ์ ์์ต๋๋ค.
db.getSiblingDB("admin").createUser( { "user" : "ravi", "pwd" : passwordPrompt(), // or cleartext password roles: [ { "role" : "clusterAdmin", "db" : "admin" } ] } )
์ด ์ ์ฐจ๊ฐ ์๋ฃ๋๋ฉด ๋ณต์ ๋ณธ ์ธํธ๋ฅผ ๊ด๋ฆฌํ๊ฑฐ๋ ์ ์ง ๊ด๋ฆฌํ๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ ํด๋น ์ฌ์ฉ์ ๋๋ ์ ์ฌํ ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์๋ก ์ธ์ฆํด์ผ ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ ์์ ๊ณผ ๊ด๋ จ๋ ๊ธฐ๋ณธ ์ ๊ณต ์ญํ ์ ์ ์ฒด ๋ชฉ๋ก์ ํด๋ฌ์คํฐ ๊ด๋ฆฌ ์ญํ ์์ ํ์ธํ์ธ์.
ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค.
ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ณต์ ๋ณธ ์ธํธ์ ์ฐ๊ฒฐํ๊ณ ์ํธ ์์ฉํ ์ ์๋๋ก ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค. ์ด ํํ ๋ฆฌ์ผ์ ์๋ฃํ๋ฉด ํด๋ผ์ด์ธํธ๋ ๊ตฌ์ฑ๋ ์ฌ์ฉ์๋ก ์ธ์ฆํด์ผ ๋ณต์ ๋ณธ ์ธํธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ฝ๊ธฐ ์ ์ฉ ๋ฐ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ฌ์ฉ์๋ฅผ ์์ฑํ ๋ ํ์ฉํ ์ ์๋ ๊ธฐ๋ณธ ์ ๊ณต ์ญํ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ญํ ์์ ํ์ธํ์ธ์.
๋ค์์ foo
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ๊ถํ์ด ์๋ ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค.
์ค์
์์คํ ๋ณด์์ ๋ณด์ฅํ๊ณ ์ ์์ ์ธ ์ก์ธ์ค๋ฅผ ๋ฐฉ์งํ๊ฑฐ๋ ์ง์ฐํ๋ ค๋ฉด ์ํธ๋ ์์์ ์ด๊ณ ๊ธธ๋ฉฐ ๋ณต์กํด์ผ ํฉ๋๋ค.
foo
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ readWrite
์ญํ ์ ๊ฐ์ง ์ฌ์ฉ์๋ฅผ ์์ฑํฉ๋๋ค.
ํ
mongo
shell ๋ฒ์ 4.2๋ถํฐ ๋ฉ์๋/๋ช
๋ น ํธ์ถ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ๋ ๋์ passwordPrompt()
๋ฉ์๋๋ฅผ ๋ค์ํ ์ฌ์ฉ์ ์ธ์ฆ/๊ด๋ฆฌ ๋ฉ์๋/๋ช
๋ น๊ณผ ํจ๊ป ์ฌ์ฉํ์ฌ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ฒ์ ์ mongo
shell์์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ์ง์ ํ ์ ์์ต๋๋ค.
db.getSiblingDB("foo").createUser( { "user" : "joe", "pwd" : passwordPrompt(), // or cleartext password roles: [ { "role" : "readWrite", "db" : "foo" } ] } )
์ด ์ฌ์ฉ์๋ก ์ธ์ฆํ๋ ํด๋ผ์ด์ธํธ๋ foo
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์
์ ์ํํ ์ ์์ต๋๋ค. ๋ณต์ ๋ณธ ์ธํธ์ ๋ํ ์ธ์ฆ๋ ์ฐ๊ฒฐ ์์ฑ์ ๋ํ ์์ธํ ๋ด์ฉ ์ ์ฌ์ฉ์ ์ธ์ฆ์ ์ฐธ์กฐํ์ธ์.
์ฌ์ฉ์ ์ถ๊ฐ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ์ฉ์ ์ถ๊ฐ ํํ ๋ฆฌ์ผ์ ์ฐธ์กฐํ์ธ์. ์ ์ฌ์ฉ์๋ฅผ ์ถ๊ฐํ ๋๋ ๋ณด์ ๊ถ์ฅ ์ฌํญ์ ๊ณ ๋ คํ์ธ์.
ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์ดํธ
์ ์ฐจ์ ์ด ์ ์์ ๋ณต์ ๋ณธ ์ธํธ๋ ์ธ์ฆ์ ์ํํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ ํ ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช ์ ์ง์ ํ๊ณ ๋ณต์ ๋ณธ ์ธํธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๊ตฌ์ฑ๋ ์ฌ์ฉ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์ ๋ณธ ์ธํธ์ ์ธ์ฆํ๋๋ก ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ธ์ฆ๋ ์ฐ๊ฒฐ์๋ ์ฌ์ฉ์ ์ด๋ฆ, ๋น๋ฐ๋ฒํธ ๋ฐ ์ธ์ฆ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํ์ํฉ๋๋ค. ์ฌ์ฉ์ ์ธ์ฆ์ ์ฐธ์กฐํ์ธ์.
์๋ฅผ ๋ค์ด, ๋ค์์ ๋ณต์ ๋ณธ ์ธํธ ์ด๋ฆ mongoRepl
์ ์ฐ๊ฒฐํ๊ณ ์ฌ์ฉ์ joe
๋ก ์ธ์ฆํฉ๋๋ค.
mongosh -u joe -password -authenticationDatabase foo --host mongoRepl/mongo1.example.net:27017, mongo2.example.net:27017, mongo3.example.net:27017
-p
๋ช
๋ น์ค ์ต์
์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด mongosh
์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์
๋ ฅํ๋ผ๋ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์์ MongoDB ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ธ์ฆ๋ ์ฐ๊ฒฐ ์์ฑ์ ๋ํ ์ง์นจ์ ๊ด๋ จ ๋๋ผ์ด๋ฒ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด ํํ ๋ฆฌ์ผ์ ์๋ฃํ๋ฉด ๋ณต์ ๋ณธ ์ธํธ๋ ์ธ์ฆ๋์ง ์์ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ ๊ฑฐ๋ถํฉ๋๋ค. ์ด์ ์ด ๋จ๊ณ๋ฅผ ์ํํ๋ฉด ์ ํ ์ ํ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ณต์ ๋ณธ ์ธํธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
ํค ํ์ผ์ ์์ฑํฉ๋๋ค.
ํค ํ์ผ ์ธ์ฆ์ ์ฌ์ฉํ๋ฉด ๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ mongod
์ธ์คํด์ค๋ ๋ฐฐํฌ์๋ฒ์์ ๋ค๋ฅธ ๋ฉค๋ฒ๋ฅผ ์ธ์ฆํ๊ธฐ ์ํ ๊ณต์ ์ํธ๋ก ํค ํ์ผ์ ๋ด์ฉ์ ์ฌ์ฉํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ํค ํ์ผ์ ๊ฐ์ง mongod
์ธ์คํด์ค๋ง ๋ณต์ ๋ณธ ์ธํธ์ ์ฐธ์ฌํ ์ ์์ต๋๋ค.
์ฐธ๊ณ
MongoDB 4.2๋ถํฐ ๋ด๋ถ ๋ฉค๋ฒ์ญ ์ธ์ฆ์ ์ํ ํค ํ์ผ์ YAML ํ์์ ์ฌ์ฉํ์ฌ ํค ํ์ผ์ ์ฌ๋ฌ ํค๋ฅผ ํ์ฉํฉ๋๋ค. YAML ํ์์ ๋ ๊ฐ์ง ๋ชจ๋ ํ์ฉ๋ฉ๋๋ค.
๋จ์ผ ํค ๋ฌธ์์ด(์ด์ ๋ฒ์ ๊ณผ ๋์ผ)
ํค ๋ฌธ์์ด์ ์์
YAML ํ์์ ํ ์คํธ ํ์ผ ํ์์ ์ฌ์ฉํ๋ ๊ธฐ์กด์ ๋จ์ผ ํค ํคํ์ผ๊ณผ ํธํ๋ฉ๋๋ค.
ํค ๊ธธ์ด๋ 6~1024์ ์ฌ์ด์ฌ์ผ ํ๋ฉฐ, base64 ์ธํธ์ ๋ฌธ์๋ง ํฌํจํ ์ ์์ต๋๋ค. ๋ณต์ ๋ณธ ์ธํธ์ ๋ชจ๋ ๋ฉค๋ฒ๋ ํ๋ ์ด์์ ๊ณตํต ํค๋ฅผ ๊ณต์ ํด์ผ ํฉ๋๋ค.
์ฐธ๊ณ
UNIX ์์คํ ์์๋ ํค ํ์ผ์ ๊ทธ๋ฃน ๋๋ ์๋ ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. Windows ์์คํ ์์๋ ํค ํ์ผ ๊ถํ์ด ํ์ธ๋์ง ์์ต๋๋ค.
์ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ํค ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ์์
์์๋ openssl
์ฌ์ฉํ์ฌ ๊ณต์ ์ํธ๋ก ์ฌ์ฉํ ๋ณต์กํ ์์ฌ ๋์ 1024์ ๋ฌธ์์ด์ ์์ฑํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ chmod
์ฌ์ฉํ์ฌ ํ์ผ ์์ ์์๊ฒ๋ง ์ฝ๊ธฐ ๊ถํ์ ์ ๊ณตํ๋๋ก ํ์ผ ๊ถํ์ ๋ณ๊ฒฝํฉ๋๋ค.
openssl rand -base64 756 > <path-to-keyfile> chmod 400 <path-to-keyfile>
ํคํ์ผ ์ฌ์ฉ์ ๋ํ ์ถ๊ฐ ์ธ๋ถ ์ ๋ณด ๋ฐ ์๊ตฌ ์ฌํญ์ ํคํ์ผ์ ์ฐธ์กฐํ์ธ์.
๊ฐ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ์ ํค ํ์ผ์ ๋ณต์ฌํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ๋ฅผ ํธ์คํ
ํ๋ ๊ฐ ์๋ฒ์ ํค ํ์ผ์ ๋ณต์ฌํฉ๋๋ค. mongod
์ธ์คํด์ค๋ฅผ ์คํํ๋ ์ฌ์ฉ์๊ฐ ํ์ผ์ ์์ ์์ด๋ฉฐ ํค ํ์ผ์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค.
USB ๋๋ผ์ด๋ธ ๋๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ ์ฅ ์ฅ์น์ ๊ฐ์ด mongod
์ธ์คํด์ค๋ฅผ ํธ์คํ
ํ๋ ํ๋์จ์ด์์ ์ฝ๊ฒ ๋ถ๋ฆฌ๋ ์ ์๋ ์ ์ฅ ๋งค์ฒด์ ํค ํ์ผ์ ์ ์ฅํ์ง ๋ง์ธ์.
transitionToAuth
๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ ์ธ์ปจ๋๋ฆฌ ๋๋ ์ค์ฌ์ ๋ฉค๋ฒ๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
๊ตฌ์ฑ์ ํฌํจํ์ฌ ๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ ์ธ์ปจ๋๋ฆฌ ๋๋ ์ค์ฌ์ ๋ฉค๋ฒ๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
security.transitionToAuth
์ค์ .mongod
security.transitionToAuth
๊ฐ ๋ก ์ค์ ๋true
์ํ์์ ๋ฅผ ์์ํ๋ฉด ์ธ์คํด์ค๊ฐ ์ธ์ฆ๋ ์ฐ๊ฒฐ๊ณผ ์ธ์ฆ๋์ง ์์ ์ฐ๊ฒฐ์ ๋ชจ๋ ํ์ฉํ๊ณ ์์ฑํ ์ ์๋ ์ ํ ์ํ๊ฐ ๋ฉ๋๋ค.security.keyFile
๊ณผ ๊ฐ์ ๋ด๋ถ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์ ์๋ ๋ฉค๋ฒ์ ๋๋ถ๋ถ์ด ์จ๋ผ์ธ ์ํ๋ฅผ ์ ์งํ๋ ค๋ฉด ๊ฐ ๋ฉค๋ฒ๋ฅผ ํ ๋ฒ์ ํ๋์ฉ ์ฌ์์ํด์ผ ํฉ๋๋ค.
์ธ์ปจ๋๋ฆฌ ๋๋ ์ค์ฌ์ ๊ตฌ์ฑ์์ ์ข ๋ฃํฉ๋๋ค.
์ธ์ปจ๋๋ฆฌ ๋๋ ์ค์ฌ์์ ์ฐ๊ฒฐ๋ mongosh
์ธ์
์์ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํด db.shutdownServer()
๋ฅผ ์คํํฉ๋๋ค.
admin = db.getSiblingDB("admin") admin.shutdownServer()
๋ค์์ ์ฌ์ฉํ์ฌ ์ธ์ปจ๋๋ฆฌ ๋๋ ์ค์ฌ์ ๋ฉค๋ฒ๋ฅผ ๋ค์ ์์ํฉ๋๋ค. transitionToAuth
๊ตฌ์ฑ ํ์ผ์์ ๋ค์ ์ค์ ์ ์ง์ ํฉ๋๋ค.
security.keyFile
์(๋ฅผ) ํค ํ์ผ ๊ฒฝ๋ก์ ํจ๊ป ์ง์ ํฉ๋๋ค.replication.replSetName
์๋ ๋ณต์ ๋ณธ ์ธํธ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.security.transitionToAuth
~true
.
mongod
๋ฐ mongos
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก์ปฌ ํธ์คํธ์ ๋ฐ์ธ๋ฉ๋ฉ๋๋ค. ๋ฐฐํฌ ๊ตฌ์ฑ์์ด ๋ค๋ฅธ ํธ์คํธ์์ ์คํ๋๊ฑฐ๋ ์๊ฒฉ ํด๋ผ์ด์ธํธ๋ฅผ ๋ฐฐํฌ์ ์ฐ๊ฒฐํ๋ ค๋ ๊ฒฝ์ฐ net.bindIp
์ค์ ์ ์ง์ ํด์ผ ํฉ๋๋ค.
security: keyFile: <path-to-keyfile> transitionToAuth: true replication: replSetName: <replicaSetName>
mongod
์(๋ฅผ) ์์ํ ๋ ๊ตฌ์ฑ ํ์ผ ๊ฒฝ๋ก์ ํจ๊ป --config
์ต์
์ ์ง์ ํฉ๋๋ค
mongod --config <path-to-config-file>
๊ตฌ์ฑ ํ์ผ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์ต์ ์ ์ฐธ์กฐํ์ธ์.
๋๋ ์ด์ ์์ํ๋ mongod
๋ช
๋ น์ค ์ต์
์ ์ฌ์ฉํ ์ ์์ต๋๋ค(์: --transitionToAuth
๋ฐ --keyFile
) mongod
. ์ ์ฒด ์ต์
๋ชฉ๋ก์ mongod
์ฐธ๊ณ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ค์ ์ ํฌํจํ์ธ์.
์ด ๋จ๊ณ๊ฐ ๋๋๋ฉด ๋ชจ๋ ๋ณด์กฐ ๋ฐ ์ค์ฌ์๊ฐ ๋ก ์ค์ ๋ security.transitionToAuth
true
์ํ๋ก ์คํ๋์ด ์คํ๋์ด์ผ ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ๋ฅผ ๊ฐ๋ฑํ๊ณ --transitionToAuth
์ผ)๋ก ์ฌ์์ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ๋ฅผ ๊ฐ๋ฑํ๊ณ ๊ตฌ์ฑ์ ํฌํจํ์ฌ ๋ฉค๋ฒ๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
security.transitionToAuth
์ค์ .mongod
security.transitionToAuth
๊ฐ ๋ก ์ค์ ๋true
์ํ์์ ๋ฅผ ์์ํ๋ฉด ์ธ์คํด์ค๊ฐ ์ธ์ฆ๋ ์ฐ๊ฒฐ๊ณผ ์ธ์ฆ๋์ง ์์ ์ฐ๊ฒฐ์ ๋ชจ๋ ํ์ฉํ๊ณ ์์ฑํ ์ ์๋ ์ ํ ์ํ๊ฐ ๋ฉ๋๋ค.security.keyFile
๊ณผ ๊ฐ์ ๋ด๋ถ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ ๊ฐ๋ฑ
mongosh
๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐํ๊ณ rs.stepDown()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๋จ๊ณ์ ์ผ๋ก ๋ฎ์ถฅ๋๋ค.
rs.stepDown()
์ด์ ํ๋ผ์ด๋จธ๋ฆฌ ์ข ๋ฃ
ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์ค๋จ๋๊ณ ๋ณต์ ๋ณธ ์ธํธ๊ฐ ์ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ ํํ๋ฉด ์ด์ ํ๋ผ์ด๋จธ๋ฆฌ mongod
๋ฅผ ์ข
๋ฃํฉ๋๋ค.
์ด์ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐ๋ mongosh
์ธ์
์์ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ db.shutdownServer()
๋ฅผ ์คํํฉ๋๋ค.
admin = db.getSiblingDB("admin") admin.shutdownServer()
๋ค์์ ์ฌ์ฉํ์ฌ ์ด์ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๋ค์ ์์ํฉ๋๋ค. transitionToAuth
๊ตฌ์ฑ ํ์ผ์์ ๋ค์ ์ค์ ์ ์ง์ ํฉ๋๋ค.
security.keyFile
์(๋ฅผ) ํค ํ์ผ ๊ฒฝ๋ก์ ํจ๊ป ์ง์ ํฉ๋๋ค.replication.replSetName
์๋ ๋ณต์ ๋ณธ ์ธํธ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.security.transitionToAuth
~true
.
๊ตฌ์ฑ์ ํ์ํ ์ถ๊ฐ ์ต์
์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๊ฒฉ ํด๋ผ์ด์ธํธ๋ฅผ ๋ฐฐํฌ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐฐํฌ ๋ฉค๋ฒ๊ฐ ๋ค๋ฅธ ํธ์คํธ์์ ์คํ๋๋๋ก ํ๋ ค๋ฉด net.bindIp
์ค์ ์ ์ง์ ํฉ๋๋ค.
security: keyFile: <path-to-keyfile> transitionToAuth: true replication: replSetName: <replicaSetName>
๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํ์ฌ mongod
์(๋ฅผ) ์์ํฉ๋๋ค.
mongod --config <path-to-config-file>
๊ตฌ์ฑ ํ์ผ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์ต์ ์ ์ฐธ์กฐํ์ธ์.
๋๋ ์ด์ ์์ํ๋ mongod
๋ช
๋ น์ค ์ต์
์ ์ฌ์ฉํ ์ ์์ต๋๋ค(์: --transitionToAuth
๋ฐ --keyFile
) mongod
. ์ ์ฒด ์ต์
๋ชฉ๋ก์ mongod
์ฐธ๊ณ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ค์ ์ ํฌํจํ์ธ์.
์ด ๋จ๊ณ๊ฐ ๋๋๋ฉด security.transitionToAuth
์ true
๋ก, security.keyFile
๋ฅผ ํค ํ์ผ ๊ฒฝ๋ก๋ก ์ค์ ํ์ฌ ๋ณต์ ๋ณธ ์ธํธ์ ๋ชจ๋ ๋ฉค๋ฒ๋ฅผ ๊ฐ๋ํด์ผ ํฉ๋๋ค.
--transitionToAuth
์์ด ์ธ์ปจ๋๋ฆฌ ๋ฐ ์ค์ฌ์๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์ ๊ฐ ์ธ์ปจ๋๋ฆฌ ๋๋ ์ค์ฌ์ ๋ฉค๋ฒ๋ฅผ ์ฌ์์ํ๊ณ ์ฌ์์ ์ security.transitionToAuth
์ต์
์ ์ ๊ฑฐํฉ๋๋ค. ๋ณต์ ๋ณธ ์ธํธ์ ์๋ ๋๋ถ๋ถ์ ๋ฉค๋ฒ๊ฐ ์จ๋ผ์ธ ์ํ๋ฅผ ์ ์งํ๋ ค๋ฉด ์ด ์์
์ ํ ๋ฒ์ ํ๋์ฉ ์ํํด์ผ ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ ๊ตฌ์ฑ์์ ๋๋ถ๋ถ์ด ๋์์ ์คํ๋ผ์ธ ์ํ์ธ ๊ฒฝ์ฐ ๋ณต์ ๋ณธ ์ธํธ๋ Go ์ฝ๊ธฐ ์ ์ฉ ๋ชจ๋๋ก ์ ํ๋ ์ ์์ต๋๋ค.
์ธ์ปจ๋๋ฆฌ ๋๋ ์ค์ฌ์ ๋ฉค๋ฒ ์ข ๋ฃ
mongosh
๋ฅผ ์ธ์ปจ๋๋ฆฌ ๋๋ ์ค์ฌ์์ ์ฐ๊ฒฐํ๊ณ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ db.shutdownServer()
๋ฅผ ๋ฐํํฉ๋๋ค.
admin = db.getSiblingDB("admin") admin.shutdownServer()
๋ค์ ์์ด ์ธ์ปจ๋๋ฆฌ ๋๋ ์ค์ฌ์ ๋ฉค๋ฒ๋ฅผ ๋ค์ ์์ํฉ๋๋ค. transitionToAuth
์ด๋ฒ์๋ ์ต์
security.transitionToAuth
์์ด ๊ณผ ๊ฐ์ mongod
๋ด๋ถ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ๋ฅผ security.keyFile
๋ค์ ์์ํฉ๋๋ค.
๊ตฌ์ฑ ํ์ผ์์ ๋ค์ ์ค์ ์ ์ง์ ํฉ๋๋ค.
security.keyFile
์(๋ฅผ) ํค ํ์ผ ๊ฒฝ๋ก์ ํจ๊ป ์ง์ ํฉ๋๋ค.replication.replSetName
์๋ ๋ณต์ ๋ณธ ์ธํธ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
๊ตฌ์ฑ์ ํ์ํ ์ถ๊ฐ ์ต์
์ ํฌํจํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๊ฒฉ ํด๋ผ์ด์ธํธ๋ฅผ ๋ฐฐํฌ์ ์ฐ๊ฒฐํ๊ฑฐ๋ ๋ฐฐํฌ ๋ฉค๋ฒ๊ฐ ๋ค๋ฅธ ํธ์คํธ์์ ์คํ๋๋๋ก ํ๋ ค๋ฉด net.bindIp
์ค์ ์ ์ง์ ํฉ๋๋ค.
security: keyFile: <path-to-keyfile> replication: replSetName: <replicaSetName>
๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํ์ฌ mongod
๋ฅผ ์์ํฉ๋๋ค.
mongod --config <path-to-config-file>
๊ตฌ์ฑ ํ์ผ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์ต์ ์ ์ฐธ์กฐํ์ธ์.
์(๋ฅผ) ์์ํ ๋ mongod
์ด์ ์์ํ๋ mongod
์ต์
์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์ ์ฒด ์ต์
๋ชฉ๋ก์ mongod
์ฐธ๊ณ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ค์ ์ ํฌํจํ์ธ์.
์ด ๋จ๊ณ๊ฐ ๋๋๋ฉด ๋ชจ๋ ๋ณด์กฐ ๋ฐ ์ค์ฌ์๊ฐ ๋ด๋ถ ์ธ์ฆ์ด ๊ตฌ์ฑ๋ ์ํ๋ก ์คํ๋๊ณ ์คํ๋์ด์ผ ํ์ง๋ง security.transitionToAuth
์ด ์์ด์ผ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ๊ตฌ์ฑ๋ ํด๋ผ์ด์ธํธ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ํตํด์๋ง ์ด๋ฌํ mongod
์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
--transitionToAuth
์์ด ํ๋ผ์ด๋จธ๋ฆฌ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ๋ฅผ ๊ฐ๋ฑํ๋ค๊ฐ ๋ค์ ์์ํฉ๋๋ค.
๋ณต์ ๋ณธ ์ธํธ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ๋ฅผ ๊ฐ๋ฑํ ๋ค์ security.transitionToAuth
์ต์
์์ด ์ฌ์์ํฉ๋๋ค.
์ค์
์ด ๋จ๊ณ๊ฐ ๋๋๋ฉด ์ธ์ฆ์ผ๋ก ์ฐ๊ฒฐํ์ง ์๋ ํด๋ผ์ด์ธํธ๋ ๋ณต์ ๋ณธ ์ธํธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ฐ๊ฒฐ์ด ๋์ด์ง์ง ์๋๋ก ํ๋ ค๋ฉด ์ด ๋จ๊ณ๋ฅผ ์๋ฃ ํ๊ธฐ ์ ์ ์ธ์ฆ์ ํตํด ์ฐ๊ฒฐํ๋๋ก ํด๋ผ์ด์ธํธ๋ฅผ ์ ๋ฐ์ดํธํ์ธ์.
ํ๋ผ์ด๋จธ๋ฆฌ ๋ณต์ ๋ณธ ์ธํธ ๋ฉค๋ฒ ๊ฐ๋ฑ
mongosh
๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐํ๊ณ rs.stepDown()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ๋จ๊ณ์ ์ผ๋ก ๋ฎ์ถฅ๋๋ค.
rs.stepDown()
์ด์ ํ๋ผ์ด๋จธ๋ฆฌ ์ข ๋ฃ
ํ๋ผ์ด๋จธ๋ฆฌ๊ฐ ์ค๋จ๋๊ณ ๋ณต์ ๋ณธ ์ธํธ๊ฐ ์ ํ๋ผ์ด๋จธ๋ฆฌ๋ฅผ ์ ํํ๋ฉด ์ด์ ํ๋ผ์ด๋จธ๋ฆฌ mongod
๋ฅผ ์ข
๋ฃํฉ๋๋ค.
์ด์ ํ๋ผ์ด๋จธ๋ฆฌ์ ์ฐ๊ฒฐ๋ mongosh
์ธ์
์์ admin
๋ฐ์ดํฐ๋ฒ ์ด์ค์ db.shutdownServer()
๋ฅผ ์คํํฉ๋๋ค.
admin = db.getSiblingDB("admin") admin.shutdownServer()
๋ค์ ์์ด ์ด์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ค์ ์์ transitionToAuth
์ด๋ฒ์๋ security.transitionToAuth
์ต์
์์ด ๊ณผ ๊ฐ์ mongod
๋ด๋ถ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ๋ฅผ ๋ค์ security.keyFile
์์ํฉ๋๋ค
๊ตฌ์ฑ ํ์ผ์์ ๋ค์ ์ค์ ์ ์ง์ ํฉ๋๋ค.
security.keyFile
์(๋ฅผ) ํค ํ์ผ ๊ฒฝ๋ก์ ํจ๊ป ์ง์ ํฉ๋๋ค.replication.replSetName
์๋ ๋ณต์ ๋ณธ ์ธํธ ์ด๋ฆ์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
security: keyFile: <path-to-keyfile> replication: replSetName: <replicaSetName>
๊ตฌ์ฑ ํ์ผ์ ์ฌ์ฉํ์ฌ mongod
๋ฅผ ์์ํฉ๋๋ค.
mongod --config <path-to-config-file>
๊ตฌ์ฑ ํ์ผ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ตฌ์ฑ ์ต์ ์ ์ฐธ์กฐํ์ธ์.
mongod๋ฅผ ์์ํ ๋ ์ด์ ์์ํ๋ mongod
์ต์
์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์ ์ฒด ์ต์
๋ชฉ๋ก์ mongod
์ฐธ๊ณ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฐฐํฌ์ ์ ํฉํ ์ถ๊ฐ ์ค์ ์ ํฌํจํ์ธ์.
์ด ๋จ๊ณ๊ฐ ๋๋๋ฉด ๋ณต์ ๋ณธ ์ธํธ์ ๋ชจ๋ ๊ตฌ์ฑ์์ด ์ธ์ฆ์ด ์ํ๋ ์ํ์์ ์คํ ์ค์ด์ด์ผ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ๊ตฌ์ฑ๋ ํด๋ผ์ด์ธํธ ์ธ์ฆ ๋ฉ์ปค๋์ฆ์ ํตํด์๋ง ์ด๋ฌํ mongod
์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
x.509 ๋ด๋ถ ์ธ์ฆ
๋ด๋ถ ์ธ์ฆ์ x.509๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ x.509 ์ธ์ฆ์๋ฅผ ์ฌ์ฉํด ๋ฉค๋ฒ ์ธ์ฆ์ ์ฐธ์กฐํ์ธ์.
ํคํ์ผ ๋ด๋ถ ์ธ์ฆ์์ x.509 ๋ด๋ถ ์ธ์ฆ์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ค๋ฉด ํคํ์ผ ์ธ์ฆ์์ x.509 ์ธ์ฆ์ผ๋ก ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฐธ์กฐํ์ญ์์ค.