標籤:mongodb shell 資料庫 sql
一、環境及啟動
Mongodb直接下載回來解壓就能用。如,我解壓到app/mongo目錄下。並在appmongo目錄下那建data/db目錄用來存在mongodb資料庫資料的一個檔案夾。
root使用者啟動mongodb,這裡如果不使用root使用者,第二次再次啟動的時候啟動不了。具體原因沒有找著。
cd app/mongo/bin/mongod --dbpath data/db
進入mongo的shell:
./bin/mongo
關閉:
一種穩妥的停止MongoDB服務的方式就是使用shutdown命令,即{“shutdown” : 1},這是管理命令,要在admin資料庫下使用。shell提供了輔助函數,如下:
use admin
db.shutdownServer();
若MongoDB伺服器是最為前台進程運行在終端,那麼可以直接關閉命令列視窗即可。
二、安全和認證
每個MongoDB執行個體中的資料庫可以有許多使用者,如果開啟了安全性檢查,則只有資料庫認證使用者才能執行讀或者寫操作。在資料庫中添加使用者,如下所示:
use testdb.addUser(“test_user”, “1234”)
addUser()函數中的第三個參數為可選項true或者false,表示該使用者是否為唯讀使用者。
注意:addUser不僅能添加使用者,還能修改使用者口令或者唯讀狀態。
要開啟安全性檢查,重啟伺服器,同時加--auth命令列選項。然後通過shell重新串連資料庫,操作如下:
use testdb.auth(“test_user”, “1234”)
之後使用者就可以在自己的許可權範圍內進行操作了。
資料庫的使用者賬戶以文檔的形式儲存在system.users集合裡面。文檔的結構如下:
{“user” : username, “readOnly” : true, “pwd” : password hash}
其中password hash是根據使用者名稱和密碼產生的散列。
使用者認證時,伺服器將認證和串連綁定來跟蹤認證。所以如果驅動程式或是工具使用了串連池或是因故障切換到另一個節點,所有認證使用者必須對每個新串連重新認證。有的驅動程式能夠將這步透明化,但要是沒有,就得手動完成了。
除了認證還有許多選項值得考慮來鎖定MongoDB執行個體。建議將MongoDB伺服器布置在防火牆後或者布置在只有應用伺服器能訪問的網路中。但要是MongoDB必須能被外面訪問到的話,建議使用—bindip選項,可以指定mongod綁定到的本地IP地址。
例如,只能從本機應用伺服器訪問:
mongod –bindip localhost
三、簡單的使用1、使用crm資料庫
use crm
2、為資料庫中的user集合(類似sql中的表),增加一條資料
db.user.insert({ "username" : "admin","password" : "1234", "email" : "[email protected]" })
3、查詢user集合
db.user.find().pretty()
4、為user集合增加多條資料
stuff = [{ "username" : "test1","password" : "1234", "email" : "[email protected]" }, { "username" : "test2","password" : "1234", "email" : "[email protected]" }] db.user.insert(stuff);
上面操作的結果如下:
[email protected]:~/app/mongo/bin$ ./mongoMongoDB shell version: 2.6.4connecting to: test> use crmswitched to db crm> db.user.insert({ "username" : "admin","password" : "1234", "email" : "[email protected]" }) WriteResult({ "nInserted" : 1 })> db.user.find().pretty() {"_id" : ObjectId("53fc73bf784eb7aa025aeb31"),"username" : "admon","password" : "1234","email" : "[email protected]"}> stuff = [{ "username" : "test1","password" : "1234", "email" : "[email protected]" }, { "username" : "test2","password" : "1234", "email" : "[email protected]" }][{"username" : "test1","password" : "1234","email" : "[email protected]"},{"username" : "test2","password" : "1234","email" : "[email protected]"}]> db.user.insert(stuff); BulkWriteResult({"writeErrors" : [ ],"writeConcernErrors" : [ ],"nInserted" : 2,"nUpserted" : 0,"nMatched" : 0,"nModified" : 0,"nRemoved" : 0,"upserted" : [ ]})> db.user.find().pretty(){"_id" : ObjectId("53fc73bf784eb7aa025aeb31"),"username" : "admon","password" : "1234","email" : "[email protected]"}{"_id" : ObjectId("53fc741f784eb7aa025aeb32"),"username" : "test1","password" : "1234","email" : "[email protected]"}{"_id" : ObjectId("53fc741f784eb7aa025aeb33"),"username" : "test2","password" : "1234","email" : "[email protected]"}>
Mongodb 的簡單使用