mongodb密碼加密
❶ 在分布式對稱密碼分配中,為什麼不用雙方已共享的主密鑰對會話內容進行加密
創建/etc/apt/sources.list.d/10gen.list文件,包含下面的內容:
$ echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/10gen.list
deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
現在用下面的命令更新軟體庫:
$ sudo apt-get update
接著使用下面的命令安裝MongoDB最新的穩定版:
$ sudo apt-get install mongodb-10gen
當命令執行完成後,MongoDB就完成安裝了。
❷ MongoDB忘記密碼怎麼恢復
vim /etc/mongodb.conf # 修改 mongodb 配置,將 auth = true 注釋掉,或者改成 false
service mongodb restart # 重啟 mongodb 服務
mongo # 運行客戶端(也可以去mongodb安裝目錄下運行這個)
use admin # 切換到系統帳戶表
db.system.users.find() # 查看當前帳戶(密碼有加密過)
db.system.users.remove({}) # 刪除所有帳戶
db.addUser('admin','password') # 添加新帳戶
vim /etc/mongodb.conf # 恢復 auth = true
service mongodb restart # 重啟 mongodb 服務
❸ mongodb怎麼查密碼復雜度策略
咨詢記錄 · 回答於2021-10-27
❹ mongodb spring用戶名密碼怎麼配置
方法如下:
創建資料庫
use
tt
這樣就創建了一個資料庫,如果什麼都不操作離開的話,這個庫就會被系統刪除.所以還要執行下面的命令:
db.usr.insert({'name':'tompig'});
db.usr.insert({'name':'tompig1','id':1});
隨便整了2個表,這個無所謂的,反...
❺ 如何建立一個含有用戶名和密碼的mongodb的資料庫
方法如下:
創建資料庫
use tt
這樣就創建了一個資料庫,如果什麼都不操作離開的話,這個庫就會被系統刪除.所以還要執行下面的命令:
db.usr.insert({'name':'tompig'});
db.usr.insert({'name':'tompig1','id':1});
隨便整了2個表,這個無所謂的,反正要導入表的話就刪除掉這2個就可以了,目前只是想讓資料庫保持住.
然後使用命令查看是否有保存tt這個資料庫:
show dbs
3.配置用戶
use tt
db.addUser('mongodb','123456');
mongodb是用戶名,123456是密碼.
好了,這樣一個資料庫和對這個資料庫配置用戶就完成了.
mongodb常用命令:
1、Help查看命令提示
help
db.help();
db.yourColl.help();
db.youColl.find().help();
rs.help();
2、切換/創建資料庫
use yourDB; 當創建一個集合(table)的時候會自動創建當前資料庫
3、查詢所有資料庫
show dbs;
4、刪除當前使用資料庫
db.dropDatabase();
5、從指定主機上克隆資料庫
db.cloneDatabase(「127.0.0.1」); 將指定機器上的資料庫的數據克隆到當前資料庫
6、從指定的機器上復制指定資料庫數據到某個資料庫
db.Database("mydb", "temp", "127.0.0.1");將本機的mydb的數據復制到temp資料庫中
7、修復當前資料庫
db.repairDatabase();
8、查看當前使用的資料庫
db.getName();
db; db和getName方法是一樣的效果,都可以查詢當前使用的資料庫
9、顯示當前db狀態
db.stats();
10、當前db版本
db.version();
11、查看當前db的鏈接機器地址
db.getMongo();
Collection聚集集合
1、創建一個聚集集合(table)
db.createCollection(「collName」, {size: 20, capped: 5, max: 100});
2、得到指定名稱的聚集集合(table)
db.getCollection("account");
3、得到當前db的所有聚集集合
db.getCollectionNames();
4、顯示當前db所有聚集索引的狀態
db.printCollectionStats();
用戶相關
1、添加一個用戶
db.addUser("name");
db.addUser("userName", "pwd123", true); 添加用戶、設置密碼、是否只讀
2、資料庫認證、安全模式
db.auth("userName", "123123");
3、顯示當前所有用戶
show users;
4、刪除用戶
db.removeUser("userName");
其他
1、查詢之前的錯誤信息
db.getPrevError();
2、清除錯誤記錄
db.resetError();
❻ mongodb可視化工具怎麼查看user密碼
密碼存儲在mongodb都是加密過的是無法通過工具查看明碼的。
❼ 運行mongo之前為什麼要先運行mongod
1.啟動和停止MongoDB
執行mongod,啟動MongoDB伺服器。mongod有很多選項,在命令中執行 mongod --help
主要選項如下:
--dbpath
指定數據目錄,默認值是C:\data\db。每個mongod進程都需要獨立的數據目錄。如果要是有3個mongod
實例,那麼必須有3個獨立的數據目錄。當mongod啟動時,會在資料庫目錄中創建mongod.lock文件
這個文件用於防止其他的mongod純凈使用該數據目錄。
--port
指定伺服器監聽的埠號,默認埠27017.要運行多個mongod進程,則要給每個指定不同的埠號。
--logpath
指定日誌的輸出路徑。如果對文件夾有讀寫許可權,系統會在文件不存在時創建它。它會將已有文件覆蓋掉,
清除所有原來的日誌記錄。如果想要保留原來的日誌,需使用--logappend選項。
--config
指定配置文件,載入命令行未指定的各種選項。
2.從配置文件啟動
MongoDB支持從文件獲取配置信息.當需要配置非常多或者要自動化MongoDB的啟動時會用到.
指定配置文件可以用-f或--config選項.
如:
mongod --config refactorConfig.txt
refactorConfig.txt內容如下:
#start MongoDB
port = 10000
dbpath = "f:\mongo\db"
logpath = "f:\mongo\log\MongoDB.txt"
rest = true
配置文件和命令行的功能一樣
mongod --dbpath "f:\mongo\db" --logpath "f:\mongo\log\MongoDB.txt" --rest --port 10000
配置文件的特點:
a.以#開頭的行是注釋
b.指定選項的語法是這種"選項=值"的形式.選項是區分大小寫的.
c.命令行如--rest的開關選項,值要設為true
3.停止MongoDB
可以使用shutdown命令{"shutdown":1},這個命令要在admin資料庫下使用.shell還提供了輔助函數:
use admin
db.shutdownServer()
4. 監控
使用管理介面,默認情況下,啟動mongod會啟動基本的http伺服器,該服務的默認埠是28017.可以在瀏覽器中輸入
localhost:28017.有些鏈接需要在mongod啟動時,用--rest選項開啟rest支持 才能進去.當開啟rest支持後,可以
在mongod啟動時使用--nohttpinterface來關閉管理介面.
5.serverStatus
要獲取運行中的MongoDB伺服器統計信息,最基本的工具是serverStatus命令
db.runCommand({"serverStatus":1})
serverStatus返回的鍵解釋:
"globalLock"的值表示全局寫入鎖佔用了伺服器多少時間(單位微秒)
"mem"包含伺服器內存映射了多少數據,伺服器進程的虛擬內存和常駐內存的佔用情況(單位MB)
"indexCounters"表示B樹在磁碟檢索("misses")和內存檢索("hits")的次數.如果這個比值開始上升,就要考慮加內存了.
"backgroundFlushing"表示後台做了多少次fsync以及用了多少時間
"opcounters"文檔包含了每種主要操作的次數
"asserts"統計了斷言的次數
6.mongostat
serverStatus雖然強大,但對伺服器的監控來說不怎麼容易.MongoDB提供了mongostat
mongostat輸出一些serverStatus提供的重要信息,它會每秒輸出新的一行,比之前看到的靜態數據實時性要好.
它輸出多個列,分別是 inserts/s commands/s vsize 和 %locked,與serverStatus的數據相對應.
還可以使用第三方插件進行資料庫的監控.
7.安全和認證
認證的基礎知識
每個MongoDB實例中的資料庫都可以有很多用戶,如果開啟了安全性檢查,這只有資料庫認證用戶才能執行讀或寫操作.
在認證的上下文中,MongoDB會將普通的數據作為admin資料庫處理.admin資料庫中的用戶被稱為超級用戶(管理員).
在認證後,管理員可以讀寫所有資料庫,執行特定的管理命令,如listDatabases和shutdown.
在開啟安全檢查前,至少要有個管理員帳號,在shell連接的是沒有開啟安全檢查的伺服器
上面添加了管理員refactor_root,在test資料庫添加了兩個普通賬號,其中一個有隻讀許可權.在shell中創建只讀用戶只要
在addUser的第三個參數設為true.調用addUser必須有響應資料庫的寫許可權.這里可以對所有資料庫調用addUser,
因為還沒有開啟安全檢查.
重啟資料庫,重啟時加入 --auth 命令行選項,開啟安全檢查
第一次連接時,不能test資料庫執行任何操作,作為只讀用戶認證後,能查找,不能插入數據.能讀寫用戶認證後,能查找和插入
數據,但不能使用show dbs 來列舉所有資料庫.超級用戶認證後,可以為所欲為了.
8.認證的工作原理
資料庫的用戶帳號以文檔的形式存儲在system.users集合里.文檔的結構是
{
"_id" : ObjectId("5006a037dff37e149322fd83"),
"user" : "refactor_read_write",
"readOnly" : false,
"pwd" : ""//是根據用戶名和密碼生成的散列
}
知道了用戶信息是如何存儲的以及存儲位置後,就可以進行日常的管理工作了.
如刪除帳戶:
> db.system.users.remove({"user":"refactor_read"})
> db.auth("refactor_read","refactor")
0
用戶認證時,伺服器將認證和連接綁定來跟蹤認證,也就是說如果驅動程序或是工具使用了連接池或是因故障切換到
另一個節點,所有認證用戶必須對每個新連接重新認證.
MongoDB的傳輸協議是不加密的,如需加密,可以用ssh隧道或者類似的技術做客戶端和伺服器間的加密.
建議將MongoDB伺服器放在防火牆或放在只有應用伺服器能訪問的網路中.如果MongoDB必須能被外面訪問到的話,
建議使用--bindip選項,可以指定mongod綁定到的本地ip地址.如:只能從本機應用伺服器訪問,可以使用
mongod --bindip localhost
默認情況下MongoDB會開啟一個簡單的http伺服器,便於查看運行,鎖,復制等方面的信息,要是不想公開這些信息,可以用
--nohttpinterface來關閉管理介面.
可以用--noscripting完全禁止服務端javascript執行
9.備份和修復
MongoDB將所有數據都存放在 數據目錄 下,默認目錄是C:\data\db\.啟動MongoDB的時候可以用--dbpath指定數據目錄.
不論數據目錄在哪裡,它都存放著MongoDB的所有數據.要想備份MongoDB,只要簡單的復制數據目錄中的所有文件即可.
除非伺服器做了完整的fsync,還不允許寫入,否則在運行MongoDB時創建數據目錄的副本並不安全,這樣的備份可能已經
破損了,需要修復.
在運行MongoDB時創建數據目錄的副本並不安全,所以就得先把伺服器關了,再復制數據目錄.但是關閉資料庫就要停止業務.
10.mongomp和mongorestore
mongomp是一種能在運行時備份的方法.mongomp對運行的MongoDB做查詢,然後將所有查到的文檔寫入磁碟.
因為mongomp是一般的客戶端,所以可供運行的MongoDB使用,即便是正在處理其他請求或是執行寫入也沒有問題.
mongomp使用普通的查詢機制,所以產生的備份不一定是伺服器數據的實時快照.伺服器在備份過程中處理寫入時,非常明顯.
mongomp備份時的查詢會對其他客戶端的性能產生影響.
mongomp --help 獲得幫助
mongorestore是從備份中恢復數據的工具.
mongorestore獲取mongomp 的輸出結果,並將備份的數據插入運行的MongoDB實例中.
如:將資料庫test備份到backup目錄
mongomp -d test -o backup
使用mongorestore 恢復到testNew 資料庫
mongorestore -d testNew --drop backup/test/
-d指定要恢復的資料庫.--drop指在恢復前刪除集合(若存在),否則數據就會與現有集合數據合並,可能會覆蓋一些文檔.
可以使用mongorestore --help獲得幫助信息
11.fsync和鎖
雖然使用mongomp和mongorestore能不停機備份,但是卻失去了獲取實時數據視圖的能力.MongoDB的fsync命令
能在MongoDB運行時復制數據目錄還不會損壞數據.
fsync命令會強制伺服器將所有緩沖區寫入磁碟.還可以選擇上鎖住址對資料庫的進一步寫入,知道釋放鎖為止.寫入鎖是讓
fsync在備份時發揮作用的關鍵.
在shell中,強制執行fsync並獲得寫入鎖:
db.runCommand({"fsync":1,"lock":1})
這時,數據目錄的數據就是一致的,且為數據的實時快照.因為上了鎖,可以安全的將數據目錄副本作為備份.要是資料庫運行在
有快照功能的文件系統上時,比如LVM,EBS,這個很有用,因為拍個資料庫目錄的快照很快.
備份好了,解鎖:
db.$cmd.sys.unlock.findOne()
db.currentOp()
運行db.currentOp()是為了確保已經解鎖了(初次請求解鎖會花點時間)
有了fsync命令,就能非常靈活的備份,不用停掉伺服器,也不用犧牲備份的實時性能.要付出的代價就是一些寫入操作被
暫時阻塞了.唯一不耽誤讀寫還能保證實時快照的備份方式就是通過從伺服器備份.
12.從屬備份
雖然上面的備份方式很靈活,但都沒有從伺服器上備份好.當復制的方式運行MongoDB,前面的提到的備份技術就不僅能用在
主伺服器上,也可用在從伺服器上.從伺服器的數據幾乎與主伺服器同步.因為不太在乎從屬伺服器的性能或者是能不能讀寫,
於是就能隨意選擇上面的3種備份方式:關停,轉存或恢復工具或fsync命令.從伺服器上備份是MongoDB推薦的備份方式.
13.修復
MongoDB的存儲方式不能保證磁碟上的數據還能用,因為可能有損毀.MongoDB內置的修復功能會試著恢復損壞的數據文件.
未正常停止MongoDB後應該修復資料庫.修復資料庫的方式很簡單就是 mongod --repair 來啟動伺服器.
修復資料庫的實際過程很簡單:將所有的文檔導出後馬上導入,忽略無效的文檔.完成後,會重建索引.數據量大的話,會花很多時間,
因為所有數據都要驗證,所有索引都要重建(從MongoDB 1.8 以後版本引入了日誌系統,使修復時間打打的縮短).
修復後可能會比修復前少些文檔,因為損壞的文檔被刪除了.
修復資料庫還能起到壓縮數據的作用.閑置控制項(如刪除體積較大集合,或刪除大量文檔後騰出的空間)在修復後會被重新利用.
修復運行中的伺服器上的資料庫,要在shell用repairDatabases.
use test
db.repairDatabase()
❽ 如何寫更新查詢來更新多個欄位在 mongodb 中
為安全起見,建議啟用防火牆指示符。當它與--service=ssh一起使用時,根據它在/etc/service文件中的定義方式可以指定一個穿過防火牆的伺服器埠。 firewall --service=ssh 接著,authconfig命令設置了影子密碼程序組(Shadow Password Suite)(--enableshadow),並為密碼加密設置了512位的SHA加密演算法(--passalgo=sha512),以及用指紋識別器進行身份驗證。用SHA512演算法加密的密碼是從$6開始,如root管理員密碼所示。
❾ php鏈接mongodb密碼包含@有歧義怎麼解決
public __construct
([ string $server = "mongodb://localhost:27017"
[, array $options = array("connect" => TRUE)
]] )
看MongoClient
構造方法,我感覺,你可以把一些
$this->conn = new MongoClient("mongodb://{$host}:{$port}
",array('username'=>$username,'password'=>$passwd,'db'=>$db));