mongod 在没有参数的情况下会使用默认数据目录/data/db(在windows下是c:\data\db\),并且使用27017端口,如果数据目录不存在或不可写,端口被占用等情况出现时会导致服务启动失败。mongod还启动一个非常基本的http服务器,监听数字比主端口号高1000的端口,也就是说你可以通过http://localhost:28017来获取数据库的管理信息。
在启动服务器的shell下可以用CTRL+C来完全的停止mongod的运行。
在windows下创建一个mongodb服务,代码如下:
mongod --dbpath "d:\mongotDB\data" --directoryperdb --logpath "d:\mongoDB\log\mongoDBLog.log"
--logappend --journal --install
mongod有很多可配置的启动选项,在命令行中运行mongod -h 可以查看所有选项:
介绍几个常用的
dbpath:指定数据目录:默认是data/db/,每个mongod进程都需要独立的数据目录,所以要是有多个Mongod实例,必须要有多个独立的数据目录,当Mongod启动时,会在数据目录 下创建mongod.lock文件,这个文件用于防止其他mongod进程使用该数据目录,如果使用同一个数据目录启动另一个Mongodb服务器,则会报错:
"unable to acquire lock for lockfilepath /data/db/mongod.lock"
logpath:指定日志输出路径,而不是输出到命令行。
logappend:日志采用追加模式
directoryperdb:每个db存放单独的目录
journal:开启日志功能(还有待研究)
port:指定服务器监听的端口号,默认是27017,web管理端口在此基础上加1000
fork:以守护进程的方式运行MongoDB,创建服务器进程(还有待研究)
config:指定配置文件
auth:开启用户认证
在创建完成MongoDB service之后可以在日志文件中看到如下 信息:
Tue Apr 24 13:38:20 [initandlisten] MongoDB starting : pid=5904 port=27017 dbpath=d:\mongoDB\data 32-bit host=zwx Tue Apr 24 13:38:20 [initandlisten] Tue Apr 24 13:38:20 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data Tue Apr 24 13:38:20 [initandlisten] ** see http://blog.mongodb.org/post/137788967/32-bit-limitations Tue Apr 24 13:38:20 [initandlisten] ** with --journal, the limit is lower Tue Apr 24 13:38:20 [initandlisten] Tue Apr 24 13:38:20 [initandlisten] db version v2.0.2, pdfile version 4.5 Tue Apr 24 13:38:20 [initandlisten] git version: 514b122d308928517f5841888ceaa4246a7f18e3 Tue Apr 24 13:38:20 [initandlisten] build info: windows (5, 1, 2600, 2, 'Service Pack 3') BOOST_LIB_VERSION=1_42 Tue Apr 24 13:38:20 [initandlisten] options: { auth: true, dbpath: "d:\mongoDB\data", directoryperdb: true, journal: true, logappend: true, logpath: "d:\mongoDB\log\mongoDBLog.log", service: true } Tue Apr 24 13:38:20 [initandlisten] journal dir=d:/mongoDB/data/journal Tue Apr 24 13:38:20 [initandlisten] recover : no journal files present, no recovery needed Tue Apr 24 13:38:20 [initandlisten] waiting for connections on port 27017 Tue Apr 24 13:38:20 [websvr] admin web console waiting for connections on port 28017
在命令行中运行net start "MongoDB" 可启动Mongodb服务
Ctrl+C可停止MongoDB,另一种比较好的方式就是使用shutdown命令,这是一个管理命令,在要admin数据库下使用,shell提供了辅助函数,来简化这一过程
运行mongo登录到数据库中,执行:
use admin db.shutdownServer();
每个MongoDB实例中的数据库都可以有许多用户,如果开户了安全性检查,则只有数据库认证的用户才能执行读写操作
也就是说只有在开启Mongodb服务时加了--auth参数时,才对用户进行认证。
use admin
db.addUser("root" ,"123");
{
"user":"root"
"readonly":false
"pwd":"6beed8c02c5d4452e0a4de2ac7ac886c"
}
上面添加了管理员root 密码为123
退出后 在命令行中运行mongo admin -u root -p 123 即可登录。