MongoDB用戶權限認證


關於用戶的認證及權限

   用戶是跟着庫創建的,在哪個庫創建的什么權限的什么用戶,只對此庫有相應權限(除超級管理員以外)。

用戶管理和認證方法

    官網文檔:https://docs.mongodb.com/master/reference/security/#security-methods-in-the-mongo-shell

角色管理方法

    官方詳細檔:https://docs.mongodb.com/master/reference/security/#security-methods-in-the-mongo-shell

1、內建角色

  • Read:允許用戶讀取指定數據庫
  • readWrite:允許用戶讀寫指定數據庫
  • dbAdmin:允許用戶在指定數據庫中執行管理函數,如索引創建、刪除,查看統計或訪問system.profile
  • userAdmin:允許用戶向system.users集合寫入,可以找指定數據庫里創建、刪除和管理用戶
  • clusterAdmin:只在admin數據庫中可用,賦予用戶所有分片和復制集相關函數的管理權限。
  • readAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀權限
  • readWriteAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的讀寫權限
  • userAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的userAdmin權限
  • dbAdminAnyDatabase:只在admin數據庫中可用,賦予用戶所有數據庫的dbAdmin權限。
  • root:只在admin數據庫中可用。超級賬號,超級權限

userAdminAnyDatabase 角色,用來管理用戶,可以通過這個角色來創建、刪除用戶

root角色,超級管理員角色,可對所有庫,所有用戶做創建,刪除,插入數據等操作

user:用戶名 

pwd:密碼 

role:指定用戶的角色,可以用一個空數組給新用戶設定空角色;在 role 字段可以指定內置角色和用戶定義的角色

2、常用查詢刪除命令

   查看mongodb的所有用戶: use admin; db.system.users.find().pretty()

   查看相應庫下的用戶:use database; show users

   刪除用戶:use database; db.dropUser('test') 或use admin; db.system.users.remove({user:"admin"})

   刪除當前庫:use database; db.dropDatabase()

   重置用戶密碼:db.changeUserPassword("wsy","wushaoyu")開啟用戶權限認證的情況下,需要管理員來操作重置密碼

   驗證用戶權限:use database;  db.auth("wsy","wushaoyu")  為1則正確

3、創建用戶

在admin數據庫中添加管理員賬戶:

use admin

db.createUser({

... user: "admin",

... pwd: "admin",

... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

... });

創建超級管理員用戶:

db.createUser(

... {

... user: "root",

... pwd: "root",

... roles: [ { role: "root", db: "admin" } ]

... }

... );

給相應庫創建相應用戶及權限,在wsy數據庫中添加wsy用戶:

db.createUser({ 

... user:'wsy', 

... pwd:'wushaoyu', 

... roles:[ 

... {role:'readWrite',db:'wsy'} 

... ]})

4、開啟用戶權限認證功能,在配置文件加入以下2行配置

security:
  authorization: enabled

#重啟mongodb服務

[root@mongodb02 ~]# /etc/init.d/mongod restart
#驗證用戶權限
[root@mongodb04 ~]# mongo --host 192.168.1.7
> use wsy
> db.auth("wsy","wushaoyu")
1

5、重置用戶的密碼

#切換到root超級管理員角色

> use admin
switched to db admin
> db.auth("root","root")
1

#重置wsy用戶的密碼

務必切換到wsy庫,否則報錯,在admin庫找不到wsy用戶
> db.changeUserPassword("wsy","WuShaoYu")
2019-03-02T19:01:41.375+0800 E QUERY [js] Error: Updating user failed: User wsy@admin not found :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.updateUser@src/mongo/shell/db.js:1541:15
DB.prototype.changeUserPassword@src/mongo/shell/db.js:1545:9
@(shell):1:1
> use wsy(
switched to db wsy
> db.changeUserPassword("wsy","WuShaoYu")
>

#測試wsy用戶密碼是否修改成功

> db.auth("wsy","wushaoyu")
Error: Authentication failed.
0
> db.auth("wsy","WuShaoYu")
1
#可看出修改密碼成功

 參考文檔:

https://docs.mongodb.com/manual/tutorial/enable-authentication/

https://docs.mongodb.com/manual/core/security-built-in-roles/   

https://blog.csdn.net/Keith003/article/details/80897085


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM