MongoDB服務配置系列問題
通過設定檔佈建服務:
dbpath=F:\Program\DATA\Mongo\db #資料存放區路徑logpath=F:\Program\DATA\Mongo\logs\mongo.log #日誌儲存路勁logappend=true #日誌寫入方式:追加port=27017 #連接埠#auth=true #是否認證bind_ip=0.0.0.0 serviceName = MongoDB #服務名稱serviceDisplayName = MongoDB
1、安裝設定檔:
在mongdb的bin目錄下在 cmd 中以管理員身份執行以下命令:
mongod --install -f F:\Program\DATA\Mongo\mongodb.conf
執行此命令後在 ‘此電腦–管理–服務和應用程式–服務’中可以看到服務名稱MongoDB。 2、關閉、啟動、刪除服務:
net stop MongoDB #停止一個服務net start MongoDB #開啟一個服務sc delete MongoDB #刪除一個服務 sc delete "服務名" (如果服務名中間有空格,就需要前後加引號)
開啟或關閉使用者名稱和密碼登陸:
auth = true 或者 auth = false 說的是串連資料庫是否要求輸入密碼驗證,對應使用者名稱和密碼。
下面說一說如何開啟密碼驗證:
admin資料庫是管理員資料庫,記錄使用者資訊,我們需要先在這個資料庫中建立一個管理使用者。然後通過這個管理使用者在其他資料庫下添加、修改或者刪除那個資料庫的使用者。
use admindb.createUser(... ... {... ... user: "****",... ... pwd: "****",... ... roles: [ { role: "root", db: "admin" } ] #'root'擁有最高許可權。... ... }... ... )
關閉服務:
net stop MongoDB
修改設定檔:
dbpath=F:\Program\DATA\Mongo\db #資料存放區路徑logpath=F:\Program\DATA\Mongo\logs\mongo.log #日誌儲存路勁logappend=true #日誌寫入方式:追加port=27017 #連接埠auth=true #把false 改成 truebind_ip=0.0.0.0 serviceName = MongoDB #服務名稱serviceDisplayName = MongoDB
重新安裝設定檔:
mongod --install -f F:\Program\DATA\Mongo\mongodb.conf
這個時候,進入到資料庫進行操作的時候,發現沒有相應許可權,下一步登陸。
use admindb.auth('username','password')use test1 #切換到資料庫test1#為test1建立一個使用者db.createUser(... {... user: "testuser",... pwd: "testpassword",... roles: [ { role: "read", db: "test1" }]... }
在 pymongo 中串連 mongodb:
import pymongoclient = pymongo.MongoClient('localhost', connect=True)client['test1'].authenticate('testuser','testpassword',mechanism="DEFAULT")。#這一步的作用是登陸。登陸成功返回TRUE。db = client['test1'] #登陸成功後,再串連資料庫。db.test.find_one() #查詢db.test.insert_one({'b':2}) #插入。#role決定了使用者的許可權。如果是唯讀使用者,則不能進行這一步操作。for i in db.test.find(): print(i)client['test'].logout() #退出資料庫。
mongodb開啟了認證認證後,我發現不能通過pymongo建立新的資料庫。
#舉例:client = pymongo.MongoClient('localhost', connect=False)db = client['jianshu']db.table1.insert({'a':1}) #這一步報錯,提示沒有認證登陸。可這是一個新的資料庫,根本都還沒寫入mongodb,怎麼認證。
這個時候有兩個辦法: 一是在mongo終端中先建立一個資料庫,設定好使用者後,在pymongo中通過使用者名稱和密碼串連。 二是關閉認證。 如何關閉認證:
#關閉MongoDB服務net stop MongoDB#修改設定檔auth = false#安裝設定檔mongod --install -f F:\Program\DATA\Mongo\mongodb.conf#開啟服務:net start MongoDB
使用者授權相關操作
在哪個庫下建立使用者,這個使用者就屬於哪個庫,且只對這個庫有存取權限。
Mongodb 的授權採用了角色授權的方法,每個角色包括一組許可權。
資料庫使用者角色:read、readWrite;
資料庫管理角色:dbAdmin、dbOwner、userAdmin;
超級使用者角色:root // 這裡還有幾個角色間接或直接提供了系統超級使用者的訪問(dbOwner 、userAdmin、userAdminAnyDatabase) 1、建立使用者
db.createUser(... {... user: "test1",... pwd: "test1",... roles: [ { role: "dbOwner", db: "test1" }]... }
2、修改密碼
db.changeUserPassword('testuser','1234') #把資料庫test的密碼改為1234
3、添加使用者權限
db.grantRolesToUser( "testuser", [ { role: "read",db:"admin"} ] )
4、收回使用者權限
db.revokeRolesFromUser("testuser",[ { role: "read",db:"admin"} ] )
5、刪除使用者
db.dropUser("testuser")