[Doc]MongoDB使用者建立與啟用access-control

來源:互聯網
上載者:User

標籤:需要   資料庫   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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.