Mongodb For Mac OSX && 登陸驗證

題外話:儘管有很多人貼出了 《我不用mongodb的十大理由》 等系列文章,可是 NoSQL 的發展不會所以而止步, mongodb 是 NoSQL 的典型表明,樓主仍是抱樂觀態度的,有人討厭是好事,儘管mongodb依然在不斷的更新中……html

1.環境:

MacBook Pro : OS X 10.9.5 (13F34)
Mongodb : 2.6.0node

2.安裝和啓動:

A: 包管理工具 自動化安裝 [當心被牆,下載中建議去煮幾杯咖啡]git

$ brew install mongodb
//記得能夠先更新 homebrew
//$ brew update

安裝完成後,啓動MongoDbgithub

mongod —config /usr/local/etc/mongod.conf

B: 文件方式 解壓安裝 [百度網盤分分鐘搞定]mongodb

點擊下載: Mongodb OSX 2.6.0 zip 壓縮包shell

解壓到隨意位置, 好比 /usr/local/var/www/mongodb-osx-x86_64-3.0.0/ 進入 mongodb-osx…… 目錄建立兩個文件夾 data/db (數據)和 data/log (日誌)數據庫

而後輕鬆啓動,好比:windows

$ cd /usr/local/var/www/mongodb-osx-x86_64-3.0.0/bin/
$ mongod --dbpath "/usr/local/var/www/mongodb-osx-x86_64-3.0.0/data/db"
……
……
2015-05-18T13:49:15.660+0800 [initandlisten] journal dir=/usr/local/var/www/mongodb-osx-x86_64-3.0.0/data/db/journal
2015-05-18T13:49:15.660+0800 [initandlisten] recover : no journal files present, no recovery needed
2015-05-18T13:49:15.843+0800 [initandlisten] waiting for connections on port 27017

啓動成功,端口號是 27017 成功, 大多數人到這裏應該就沒有下文了~ ,(好比,端口怎麼改? 接着看……)api

3.啓動參數

例子:bash

mongod --dbpath="安裝路徑/data/mongodb" --logpath="安裝路徑/data/mongodb/logs/mongodb.log" --logappend --auth --port=27017 --fork

沒事,你先試一下,我等你 ^_^

解釋:

mongod      : 啓動程序命令
--dbpath    : 的數據庫存放路徑
--logpath   : 的日誌文件路徑
--logappend : 以追加方式,寫日誌文件
--auth      : 是否進行用戶認證,加上後,MongoDB會使用用戶認證方式登陸。
--port      : 端口號,能夠自定義,默認 27017
--fork      : 服務是否之後臺運行的方式運行
--bind_ip   : 限制特定IP地址訪問

4.設置登陸權限

進入到 bin 目錄執行 mongo 就能夠,好比樓主的:

$ cd /usr/local/var/www/mongodb-osx-x86_64-3.0.0/bin/&&mongo

接下來能夠熟悉下操做一些經常使用指令,好比增刪改查「CURD」,這裏就不一一列舉了,傳送門: mongodb for windows
這裏說一下如何 添加登陸權限

添加登陸權限

先貼一段 code:

> show dbs
admin    (empty)
hi-blog  0.078GB
local    0.078GB
session  0.078GB
> use hi-blog
switched to db hi-blog
> show collections
apikeys
classifys
system.indexes
users
> db.addUser('root','root123')
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { "user" : "root", "roles" : [ "dbOwner" ] }
> show collections
2015-05-18T14:24:36.802+0800 error: {
    "$err" : "not authorized for query on hi-blog.system.namespaces",
    "code" : 13
} at src/mongo/shell/query.js:131
> db.auth('root','root123')
1
> show collections
apikeys
classifys
system.indexes
users
> show users
{
    "_id" : "hi-blog.root",
    "user" : "root",
    "db" : "hi-blog",
    "roles" : [
        {
            "role" : "dbOwner",
            "db" : "hi-blog"
        }
    ]
}
> _

以上先展現了數據庫的「表」(databases)而後切換到了某個「集」(collections)而後再看下這個集合下的數據「行」(document),在沒有添加(addUser)管理員前 collections 隨便看,一旦添加了 管理員 則須要認證後(auth)才能查看
[注意:大前提是在啓動mongodb服務時添加了 --auth 用戶認證參數]

驗證測試

咱們重啓一下 mongo 服務,例如樓主的:

$ mongod --dbpath "/usr/local/var/www/mongodb-osx-x86_64-3.0.0/data/db" --port=27017 --auth
//添加auth命令就開啓了登陸權限

另外打開一個 bash 窗口:

$ mongo -uroot -proot123 127.0.0.1:27017/hi-blog
//u 後帶用戶名 p 後帶密碼

連接成功~

注:對admin設置管理帳號則登陸後能夠操做整個數據庫,對 A 數據設置管理帳號則登陸後只能操做A數據庫,例如 以上連接了 hi-blog 數據庫,若想 show dbs 則報錯。 show collections 固然正常。

5.mongoose 登陸驗證

相似的 輕量級的nodejs mongodb驅動有不少,好比:

mongoose, node-mongodb-native, mongoskin, node-mongolian, mongous, mongojs

他們的關係聽說是這樣:

這裏以mongoose爲例,舉例登陸驗證

mongodb://你的帳號:密碼@host ip:端口號/設置登陸權限的數據庫
mongodb://admin:123456@192.168.1.100:27018/yourdb

這仍是很輕鬆的,什麼?上下文也要?以下:

//mongodb操做.js
var mongoose = require('mongoose'),
    config = require('./../db/config');
db = mongoose.createConnection();

//設置用戶名密碼端口數據庫
db.openSet(config.dbLogin);
// 連接錯誤
db.on('error', function(error) {
    console.log(error);
});
……

//config.js
//須要登陸的mongodb
var dbLogin         = 'mongodb://admin:123456@192.168.1.100:27018/yourdb';
……
exports.dbLogin     = dbLogin;
……

相關文章
相關標籤/搜索