1. 程式人生 > >Mongodb3.0.6啟用認證許可權設定

Mongodb3.0.6啟用認證許可權設定

MongoDB預設不開啟授權認證,只要客戶端程式能夠訪問MongoDB伺服器,就可以與它進行連線。

<span style="font-size:18px;">MongoClient mongoClient = new MongoClient("182.92.229.156",27017); //不需要使用者密碼即可連線。</span>

但是在生產環境,一般都是需要開啟授權認證的,只有經過授權的使用者才能夠連線到MongoDB,才允許訪問相關的資源,即:使用者-角色-資源~  這種模式與其它關係型資料庫的許可權模式基本一致,這裡不做過多的解釋。

要開啟認證模式,首先修改MongoDB的配置檔案: /etc/mongod.conf (路徑可能與我不同~

修改配置:

# Turn on/off security.  Off is currently the default
#noauth=true
auth=true  #這個就是開啟認證的配置

開啟完成後重啟MongoDB即可生效:

sudo service mongod restart

需要特別注意一點,就是在開啟授權認證模式之前,需要先在MongoDB中建立一個管理員使用者,MongoDB是不提供預設使用者的。

下面介紹如何建立管理員使用者:

1、首先切換到admin資料庫,這個庫的作用是用來存放MongoDB中所有的授權使用者,預設這個庫是不存在的,我們先切換過來,在用的時候它會自動建立。

use admin;
切換成功會顯示 switched to db admin

2、建立使用者,把下面程式碼負載進去執行。
db.createUser({
	"user" : "dbadmin",
        "pwd": "123456",
   	"roles" : [
   		{role:"userAdminAnyDatabase", db: "admin"},
		{role:"readWriteAnyDatabase", db: "admin"}
	]},
	{ w: "majority" , wtimeout: 5000 }
);

MongoDB中內建了很多角色,我們可以直接使用。

角色可以設定多個:

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

role:表示角色,db:表示當前角色針對哪個資料庫有效。比如設定了admin 那麼這個使用者的許可權範圍只在admin資料庫有效。

比如我設定 role:"readWrite", db:"mydb" 那麼這個使用者只能在mydb這個資料庫有讀寫的許可權。

但是MongoDB中提供了幾個全域性資料庫的角色,例如上面的

userAdminAnyDatabase, readWriteAnyDatabase

注意後面的AndDataBase, 如果設定了這個角色,那麼意味著這個角色是針對所有資料庫有效的,儘管它設定了db:"admin"。

設定完畢系統管理員使用者後,我們就可以開啟MongoDB中的授權認證模式了,開啟模式後在此進入MongoDB的客戶端:

[[email protected] ~]# mongo
MongoDB shell version: 3.0.6
connecting to: test
>


第一步切換到admin資料庫:
use admin;
switched to db admin

第二步進行身份認證:

db.auth("dbadmin","123456");

認證成功返回1,如果認證失敗會提升相關的錯誤資訊。

我們可以檢視一下系統使用者:

<span style="font-size:18px;">db.system.users.find()</span>
{ "_id" : "admin.dbadmin", "user" : "dbadmin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "NuYMHdgcMc4KXcghSaahbw==", "storedKey" : "WIddwwnCu5a88R5Osix4BHdml0w=", "serverKey" : "0jPPRIQEXMNdH3IJ8RWyGyJ5rGQ=" } }, "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" }, { "role" : "readWriteAnyDatabase", "db" : "admin" } ] }

然後我們可以給具體的資料裡設定授權使用者了。

db.createUser({
	"user" : "mydb",
    "pwd": "mydb",
    "roles" : [ 
    	{role: "readWrite", db: "mydb" }
     ]},
	{ w: "majority" , wtimeout: 5000 } 
);
我們給mydb資料庫設定讀寫的許可權使用者。
MongoClientURI connectionString = new MongoClientURI("mongodb://mydb:[email protected]你的IP/?authSource=mydb&authMechanism=SCRAM-SHA-1");
MongoClient mongoClient = new MongoClient(connectionString);

上面的URL配置了使用者名稱和密碼 以及要連線的資料庫。

相關推薦

Mongodb3.0.6啟用認證許可權設定

MongoDB預設不開啟授權認證,只要客戶端程式能夠訪問MongoDB伺服器,就可以與它進行連線。 <span style="font-size:18px;">MongoClient m

如何修改MongoDB3.0的資料庫認證機制

修改需求:MongoDB3.0當前認證機制為SCRAM-SHA-1,需要改為老的認證機制MONGODB-CR 方法如下: > use admin switched to db admin > db.system.version.findOne({"_id" : "

springBoot 2.0.3 + SpringSecurity 5.0.6 + thymeleaf + boostrap 許可權管理案例

1、 工於成其實,必先搭建springboot工程,配置我們pom.xml 所需的jar依賴          <!-- thymeleaf 模板依賴 -->     

記錄一次MongoDB3.0.6版本wiredtiger與MMAPv1引擎的寫入耗時對比

MongoDB3.0.x的版本特性(相對於MongoDB2.6及以下): 增加了wiredtiger引擎: 開源的儲存引擎; 支援多核CPU、充分利用記憶體/晶片級別快取(注:10月14日剛剛釋出的3.0.7版本中,進一步改進了記憶體操作的效能); 基於B-TREE

6.0動態許可權設定,第三方庫PermissionGen的使用

android 6.0 新增加了執行時的動態新增許可權,在此介紹一個第三方庫,PermissionGen,可以很方便簡潔的增加 6.0許可權。 步驟: 1.引用庫:   在 app gradle 中引入: compile 'com.lovedise:permission

Android 6.0 執行中手動去設定介面取消該app的某個許可權,導致application被強制銷燬造成app崩潰問題的解決

android 6.0版本已經發布了很長時間了,相信大家都知道6.0 系統加入了執行時許可權管理,一些危險許可權需要在執行時申請。 現在有這麼一種情況,如果在一開始使用者授予了某項許可權,比如定位許可權或者相機許可權,當應用程式已經啟動了,使用者手動按下主鍵之

安卓6.0 定位許可權設定(特殊)

安卓6.0後藍芽搜尋需要開啟定位服務,使用者第一次經常不明所以會拒絕申請,導致無法使用藍芽功能,下面分析一些特殊品牌手機的定位許可權申請。 1. 小米 (4c android7.0 miui8.2 targetSDKversion 25) 1

SpringBoot2.0.3 + SpringSecurity5.0.6 + vue 前後端分離認證授權

IV In admin 新項目 錯誤 param func put servlet   新項目引入安全控制   項目中新近添加了Spring Security安全組件,前期沒怎麽用過,加之新版本少有參考,踩坑四天,終完成初步解決方案.其實很簡單,Spring Securi

Android ble掃描版本高於6.0後需要定位許可權

參考部落格:http://blog.csdn.net/sun6223508/article/details/50505936 p private final int REQUEST_FINE_LOCATION = 1; private void mayRequestLoc

安卓6.0之後——動態獲取許可權封裝

轉載請註明出處    https://blog.csdn.net/lebang08/article/details/52751088 今天將專案中需要授權的地方,增加了判斷 -----------關於6.0許可權的封裝。 大家知道,在android6.0之後,谷歌為了更

linux7.0許可權設定

. 許可權設定 拷貝檔案/etc/fstab 到/var/tmp/fstab,配置檔案/var/tmp/fstab 的許可權為: cp /etc/fstab /var/tmp/fstab ll /var/tmp/ 長格式顯示var/tmp/目錄 檔案/var/tmp/fstab 的所有者是

mysql8.0遠端連線許可權設定和專案連線mysql時報caching_sha2_password錯誤

1.登入MySQL mysql -u root -p 輸入您的密碼 2.選擇 mysql 資料庫 use mysql; 因為 mysql 資料庫中儲存了使用者資訊的 user 表。 3.在 mysql 資料庫的 user 表中檢視當前 root 使用者的相關資訊 se

Android 6.0以上動態獲取許可權

首先在清單檔案中註冊 然後在MainActivity.java中將許可權封裝到一個String陣列中 static final String[] PERMISSION = new String[]{ Manifest.permission.READ_PHONE_STATE,

交換篇(6.0) 03. 解決恢復出廠設定後不能連線的問題 ❀ 飛塔交換機 (FortiSwitch)

        【簡介】飛塔交換機有兩種工作模式,一種是本地管理,一種是遠端管理,當我們把交換機恢復出廠後,會發現在防火牆管理不了交換機了,那麼我們要怎麼做呢?  工作環境示例         這裡我們模擬最常見單位的網路環境,那就是一臺防火牆,一臺核心交換機,多臺接入交

教程篇(6.0) 04. 防火牆認證 ❀ 飛塔 (Fortinet) 網路安全專家 NSE4

在本課中,你將學習如何在FortiGate的防火牆策略上使用身份驗證。 在本次課程中,你將探討以下主題: 防火牆認證的方法 遠端認證伺服器 使用者組 使用防火牆策略認證 通過強制門戶認證 監控和故障排查 完成本章節後,你應該

android6.0動態許可權設定

android6.0後就需要手動獲取許可權。主要有以下步驟:1、在menifests檔案加入相應許可權,如:<!-- 獲取照相機拍照許可權 --> <uses-permission a

Istio 1.0 # 基礎認證策略 # 設定終端使用者認證

Istio 0.8版本增強了服務間雙向認證,1.0版本增加了終端使用者認證的功能,這樣整個服務網格的認證策略就齊全了;目前只支援JWT Authentication,可以使用authentication policy進行配置; 公司的OAuth2 Server

Android 6.0 7.0及以上 動態許可權

android 6.0版本開始,google粑粑處於安全性考慮,敏感的許可權只在manifest註冊已經不可以了(例如攝像頭許可權,定位許可權等等),需要在程式碼中動態註冊。 以下對許可權做一些介紹(轉載): 以下是需要單獨申請的許可權,共分為9組,每組只要有一個許可權申

解決Android拍照6.0以上動態獲取許可權問題

概述 在Android開發過程中,拍照或者從相簿中選擇圖片是很常見的功能。下面要說得這個案例比較簡單,使用者點選按鈕選擇拍照或者開啟相簿選擇圖片,然後將選中的圖片顯示在手機上。android6.0後,推出了動態許可權管理。以往我們將涉及到的許可權全部寫在清單檔案中,只要

解決Android 6.0以上的相機許可權適配問題

近期創業大潮中,幾個小夥伴,拼了命往前趕,這邊app一個月連帶著服務端一個人搞定,這幾天遇到一個問題 使用zxing掃碼的時候,CaptureActivity介面的相機不能使用,log一下,顯示camera為空,其實之前我一直懷疑是不是,Android 6.0不支援came