我已經設置了一個使用MongoDB Image的docker。默認情況下,它沒有設置密碼。我做了一個用戶並分配了它的角色,這非常好。但問題是,沒有身份驗證,連接仍然是可能的。使用Docker身份驗證的MongDB
連接與認證>正確的用戶名,正確的密碼 - >連
連接與認證>正確的用戶名,密碼錯誤 - >連接失敗
連接不經認證>連
我想讓第三點停止工作。
我已經設置了一個使用MongoDB Image的docker。默認情況下,它沒有設置密碼。我做了一個用戶並分配了它的角色,這非常好。但問題是,沒有身份驗證,連接仍然是可能的。使用Docker身份驗證的MongDB
連接與認證>正確的用戶名,正確的密碼 - >連
連接與認證>正確的用戶名,密碼錯誤 - >連接失敗
連接不經認證>連
我想讓第三點停止工作。
步驟: -
1)運行碼頭工人,例如無需認證
$ docker run --name container-name -d -p 27017:27017 -v ~/mongodb:/data/db mongo
2)創建與管理角色主管理員用戶
$ mongo --port 27017 $ use admin; $ db.createUser({user: "adminUserName",pwd: "adminPassword",roles: [{ role: "userAdminAnyDatabase", db: "admin" }})
這將創建一個管理員數據庫中的角色爲「userAdminAnyDatabase」的用戶。這就像超級用戶。
3)特定數據庫
$ use $ db.createUser({user: "dev-read-username",pwd: "dev-read-password",roles:["read"]}) -- User with "read" role $ db.createUser({user: "dev-write-username",pwd: "dev-write-password",roles:["readWrite"]}) -- User with "readWrite" role
創建用戶對於可用角色的列表,或者如何創建自定義角色,請https://docs.mongodb.com/manual/reference/built-in-roles/
4)拆下泊塢窗容器
$ docker ps -a $ docker stop container_id $ docker rm container_id
5)認證運行泊塢窗實例啓用
$ docker run --name container-name -d -p 27017:27017 -v ~/mongodb:/data/db mongo --auth
我想你可能沒有開始啓用--auth泊塢窗容器。一旦你啓動--auth啓用,那麼你將無法連接沒有憑據。
我已經部署了--auth enabled – AqibBangash
@AqibBangash奇怪它沒有與--auth啓用工作。我已經用詳細的步驟編輯了我的答案。你可以交叉驗證一次,看看你是否錯過了任何事情。 –
與身份驗證選項運行添加授權docker run --name some-mongo -d mongo --auth
你應該創建一個管理員用戶。如果管理員用戶使用存在或db.getSiblingDB('admin').system.users.find()
您可以檢查創建一個這樣的:db.createUser({ user: 'jsmith', pwd: 'some-initial-password', roles: [{ role: "userAdminAnyDatabase", db: "admin" } ] });
@AkshayMehta比我快:) – Ludovic
我已經部署了--auth啓用加我做了一個管理員用戶。仍然可以不經過認證即可訪問。 – AqibBangash
官方碼頭集裝箱? – Ludovic
你能以此爲接受的回答你的問題的話,或者還沒有完全滿意嗎? – Wrench