题外话:尽管有很多人贴出了 《我不用mongodb的十大理由》 等系列文章,可是 NoSQL 的发展不会所以而止步, mongodb 是 NoSQL 的典型表明,楼主仍是抱乐观态度的,有人讨厌是好事,尽管mongodb依然在不断的更新中……html
MacBook Pro : OS X 10.9.5 (13F34)
Mongodb : 2.6.0node
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
例子: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地址访问
进入到 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
固然正常。
相似的 轻量级的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; ……
完