標籤:需要 資料庫 roles http insert readwrite cal 插入資料 串連
文檔連結:https://docs.mongodb.com/manual/tutorial/enable-authentication/
Pre
個人總感覺資料庫的文檔結構不太友好, 不太解決問題。以下按照原文檔結構翻譯:
下面的教程以一個使用了預設認證機制的standalone mongod執行個體為背景來示範啟用認證。
副本和叢集分區的賬戶認證
請參考:
https://docs.mongodb.com/manual/core/security-internal-authentication/
賬戶管理
在啟用access-control前,請先確認在admin資料庫中,存在userAdmin或userAdminAnyDatabase角色的賬戶。
該角色賬戶擁有以下許可權:建立賬戶、賦予賬戶角色、廢除賬戶角色、建立/修改賬戶角色。
在啟用access-control前後都可以建立賬戶。
如果還未建立任何賬戶便啟用access-control,則MongoDB會拋出一個localhost exception,允許使用者在admin資料庫中建立一個賬戶管理員帳號。一旦管理員帳號建立,使用者以賬戶管理員帳號登陸後,才能添加其他賬戶。
步驟
以下步驟示範在未啟用access-control的MongoDB執行個體中首次添加使用者,然後開啟的操作。
1. 不啟用access-control啟動MongoDB
mongod --port 27017 --dbpath /data/db
2. 串連到執行個體(本地)
mongo --port 27017
3. 建立使用者管理員
建立一個userAdminAnyDatabase角色的使用者。
> use admin> db.createUser( { user: "UserAdmin", pwd: "UserAdminPwd", roles: [{ role: ‘userAdminAnyDatabase‘, db: ‘admin‘ }] })
退出mongo shell
4. 啟用access-control,重啟mongoDB
使用--auth選項重啟mongod執行個體
mongod --auth --port 27017 --dbpath /data/db
啟用access-control之後,使用者需要先登陸才能進行操作。使用者能夠執行的操作由賬戶歸屬的角色決定。
5. 以管理員帳號登陸
通過mongo shell,使用者可以:
- 在串連執行個體時認證
- 進入shell, 通過db.auth()進行使用者認證
串連時認證
mongo --port 27017 -u ‘UserAdmin‘ -p ‘UserAdminPwd‘ --authenticationDatabase "admin"
串連後認證
mongo --port 27017> use admin> db.auth(‘UserAdmin‘, ‘UserAdminPwd‘)
6. 建立其他賬戶
一旦登陸了管理員賬戶之後,就可以通過db.createUser()來建立其他賬戶。賬戶可以賦予mongoDB內建的角色許可權,也可以自訂角色許可權。
Mongo內建使用者角色見:https://docs.mongodb.com/manual/core/security-built-in-roles/
自訂使用者角色見:https://docs.mongodb.com/manual/core/security-user-defined-roles/
賬戶管理員帳號UserAdmin只有管理賬戶和角色的許可權。若UserAdmin企圖執行其他動作,如從test資料庫中的foo集合讀取資料,MongoDB會返回一個error。
以下是建立一個賬戶的操作
> use test> db.createUser( { user: "myTester", pwd: "xyz123", roles: [ { role: "readWrite", db: "test" }, { role: "read", db: "reporting" } ] })
7. 使用myTester賬戶登陸
串連時認證
mongo --port 27017 -u "myTester" -p "xyz123" --authenticationDatabase "test"
串連後認證
mongo --port 27017> use test> db.auth("myTester", "xyz123" )
myTester使用者往集合插入資料
> db.foo.insert( { x: 1, y: 1 } )
[Doc]MongoDB使用者建立與啟用access-control