1. 程式人生 > 實用技巧 >MongoDB 單例項節點主機的使用者和許可權一般操作步驟

MongoDB 單例項節點主機的使用者和許可權一般操作步驟

步驟總結:
1.先正常啟動
2.建立使用者,建立資料庫病授權使用者
3.關閉程式,開啟安全,然後啟動
4.使用賬號和密碼連線

  1. 按未開啟認證的方式(配置檔案中沒開啟安全選項並且啟動命令中不新增 --auth 引數,)來啟動MongoDB服務
  2. 使用Mongo客戶端登入,然後建立管理使用者:
# 切換到admin庫
> use admin

# 建立系統超級使用者 myroot,設定密碼12345,設定角色root
> db.createUser({user:"myroot",pwd:"12345",roles:[{"role":"root","db":"admin"}]})
# 或者 db.createUser({user:"myroot",pwd:"12345",roles:["root"]})

# 建立專門用來管理admin庫的賬號myadmin,只用來作為使用者許可權的管理
> db.createUser({user:"myadmin",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

# 檢視已經建立了的使用者的情況:
> db.system.users.find()

# 刪除使用者
> db.dropUser("myadmin")

# 修改密碼
> db.changeUserPassword("myroot", "123456")

提示:
1)本案例建立了兩個使用者,分別對應超管和專門用來管理使用者的角色,事實上,你只需要一個使用者即可。如果你對安全要求很高,防止超管洩漏,則不要建立超管使用者。
2)和其它資料庫(MySQL)一樣,許可權的管理都差不多一樣,也是將使用者和許可權資訊儲存到資料庫對應的表中。Mongodb儲存所有的使用者資訊在admin 資料庫的集合system.users中,儲存使用者名稱、密碼和資料庫資訊。
3)如果不指定資料庫,則建立的指定的許可權的使用者在所有的資料庫上有效,如 {role:"userAdminAnyDatabase", db:""}

  1. 認證測試
# 切換到admin
> use admin
# 密碼輸錯
> db.auth("myroot","12345")
Error: Authentication failed.
0
# 密碼正確
> db.auth("myroot","123456")
1
  1. 建立普通使用者
    建立普通使用者可以在沒有開啟認證的時候新增,也可以在開啟認證之後新增,但開啟認證之後,必須使用有操作admin庫的使用者登入認證後才能操作。
    底層都是將使用者資訊儲存在了admin資料庫的集合system.users中。
# 建立(切換)將來要操作的資料庫articledb,
> use articledb
switched to db articledb
# 建立使用者,擁有articledb資料庫的讀寫許可權readWrite,密碼是123456
> db.createUser({user:"bobo", pwd: "123456", roles: [{role:"readWrite",db:"articledb"}]})
# 或者 db.createUser({user: "bobo", pwd: "123456", roles: ["readWrite"]})

# 測試是否可用
> db.auth("bobo","123456")
1

提示:
如果開啟了認證後,登入的客戶端的使用者必須使用admin庫的角色,如擁有root角色的myadmin使用者,再通過myadmin使用者去建立其他角色的使用者

  1. 服務端開啟認證
    (1)關閉已經啟動的服務
    1)使用linux命令殺死程序
    2)在mongo客戶端中使用shutdownServer命令來關閉
> use admin
switched to db admin

> db.shutdownServer()

需要幾個條件:

  • 必須是在 admin庫下執行該關閉服務命令。
  • 如果沒有開啟認證,必須是從 localhost登陸的,才能執行關閉服務命令。
  • 非 localhost的、通過遠端登入的,必須有登入且必須登入使用者有對admin操作許可權才可以。

(2)以開啟認證的方式啟動服務
有兩種方式開啟許可權認證啟動服務:一種是引數方式,一種是配置檔案方式。
1)引數方式
在啟動時指定引數 --auth ,如:

mongod -f mongod.conf --auth
  1. 配置檔案方式
    在mongod.conf配置檔案中加入:
vim mongod.conf
security:
 #開啟授權認證
  authorization: enabled

此時啟動就不指定引數 --auth了 ,如:

mongod -f mongod.conf
  1. 客戶端連線登入
    有兩種認證方式,一種是先登入,在mongo shell中認證;一種是登入時直接認證。
    1)先連線再認證
# mongo --host 192.168.0.253 --port 27017

> use articledb
switched to db articledb
> db.auth("bobo","123456")
1
> db.comment.find()
>

2)連線時直接認證

# 對admin資料庫進行登入認證和相關操作:
mongo --host 192.168.0.253 --port 27017 --authenticationDatabase admin -u myroot -p 123456

# 對articledb資料庫進行登入認證和相關操作:
mongo --host 192.168.0.253 --port 27017 --authenticationDatabase articledb -u bobo -p 123456

提示:

  • -u :使用者名稱
  • -p :密碼
  • --authenticationDatabase :指定連線到哪個庫。當登入是指定使用者名稱密碼時,必須指定對應的資料庫!