一、MongoDB安装及配置
1.1、下载安装程序
MongoDB提供了linux平台上32位和64位的安装包,你可以在官网下载安装包。
下载地址:http://www.mongodb.org/downloads
下载完安装包,并解压 gz(以下演示的是 64 位 Linux上的安装) 。
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.3.tgz # 下载
tar -zxvf mongodb-linux-x86_64-3.2.3.tgz # 解压
mv mongodb-linux-x86_64-3.2.3/ /usr/local/mongodb # 将解压包拷贝到指定目录
MongoDB 的可执行文件位于 bin 目录下,所以可以将其添加到 PATH 路径中:
export PATH=<mongodb-install-directory>/bin:$PATH
1.2、创建数据库目录
MongoDB的数据存储在/data/db目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建data目录,并在data目录中创建db目录。
以下实例中我们将data目录创建于根目录下(/)。
注意:/data/db 是 MongoDB 默认的启动的数据库路径(-dbpath)。
mkdir -p /data/db
1.3、运行服务
可以通过mongo安装目录下bin目录的mongod命令来启动mongodb服务。
可以加上–path参数来指定服务启动的端口,默认是27017;加上–dbpath参数指定数据库文件所在的目录,默认目录在/data/db。
mongod –port 25000 –dbpath /data/db
1.4、后台管理Shell
如果你需要进入MongoDB后台管理,你需要先打开mongodb装目录的下的bin目录,然后执行mongo命令文件。
MongoDB Shell是MongoDB自带的交互式Javascript shell,用来对MongoDB进行操作和管理的交互式环境。
当你进入mongoDB后台后,它默认会链接到 test 文档(数据库)。注意,如果你不是默认端口,请在mongo命令后面指定IP地址和端口号。
mongo 127.0.0.1:25000
1.5、Web用户界面
MongoDB 提供了简单的 HTTP 用户界面。 如果你想启用该功能,需要在启动的时候指定参数 –rest 。
mongod –port 25000 –dbpath /data/db –rest
MongoDB 的 Web 界面访问端口比服务的端口多1000。
如果你的MongoDB运行端口使用默认的25000,你可以在端口号为26000访问web用户界面,即地址为:http://localhost:26000。
1.6、在系统启动时写入环境变量
可以用vi打开/etc/profile文件,然后将刚才的环境变量设置命令写到文件的尾部。
vi /etc/profile
# /etc/profile #
….
export PATH=<mongodb-install-directory>/bin:$PATH
1.7、在后台运行服务
使用linux下的 nohub [command] & 命令,可以让服务在后台运行,这样即使关掉终端服务也不会一起关掉。启动服务之后如果要关掉终端,请使用linux的exit命令,而不要强制退出。
>nohup mongod –port 25000 –dbpath /data/db –rest –auth &
exit
为了避免MongoDB的服务在终端关掉后也一起关掉,可以使用–fork参数将服务设置为后台运行模式。
mongod –port 25000 –dbpath /data/db -fork –logpath /var/log/mongodb.log –logappend
可以用–logpath参数指定日志的输出路径,并且在最后面添加上–logappend参数,以追加的方式创建日志防止把之前的日志删除了。
1.8、停止运行中的服务
尽量不要用kill命令杀掉进程的方式停止服务,请进入Shell,用db.shutdownServer命令来关闭服务。
use admin
db.shutdownServer()
1.9、加入服务启动项
打开/etc/rc.local文件
vi /etc/rc.local
将启动服务的命令添加到文件尾部
#! /bin/sh
……
mongod –port 25000 –dbpath /data/db -fork –logpath /var/log/mongodb.log –logappend
1.10、使用配置文件启动服务
如果觉得在服务后面带着大量参数很不方便,可以使用配置文件来代替,只需要事先编写好配置文件,然后在启动服务的时候加上–config参数即可。
配置文件格式
port=25000
dbpath=/data/db
logpath=/var/log/mongodb.log
fork=true
logappend=true
shardsvr=truedirectoryperdb=true
auth=true
然后启动服务,在–config参数后制定配置文件路径
mongo –config /配置文件目录/mongo.conf
二、安全性配置
MongoDB默认是在非安全性模式下运行的,这样在生产环境下非常危险,所以建议还是开启安全性开关,并分配相应的角色权限。在这里,我们会创建三个不同角色的用户来管理数据库,分别是admin、sa、dev三个用户。admin用户专门负责管理整个数据库的用户权限,但不具备业务数据管理的权限;sa用户负责服务的管理,只有他有权限关闭服务;而dev用户负责管理某个业务数据库里面的数据,拥有该数据库的数据读写权限。
2.1、添加系统用户
先创建一个权限管理用户admin。
use admin
db.createUser({
user: “admin”,
pwd: “admin”
roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]
})
如上所示,系统相关的权限配置要在admin库上进行,MongoDB默认是没有创建该数据库的,而我们只要用use命令切换到该数据库就可以了。接下来就调用db.createUser命令来创建用户和设置密码,并为他赋予userAdminAnyDatabase权限,这个权限代表该用户有权管理所有用户权限设置,另外这里还在权限设置里面指定了该用户管理的数据库为admin。
接下来创建系统服务管理用户sa。
use admin
db.createUser({
user: “admin”,
pwd: “admin”
roles: [ { role: “hostManager”, db: “admin” } ]
})
和admin用户的创建方法差不多,只不过赋予的权限是hostManager,该权限能够监控服务的信息,以及进行关闭服务等操作。
2.2、在安全性模式下运行
创建完admin用户后,就可以将服务切换到安全性模式。要切换到安全性模式,可以在启动服务的时候加上–auth参数。
mongod –port 25000 –dbpath /data/db –rest –auth
然后打开Shell,并进行权限认证,用刚才的admin用户,认证命令为db.auth(“用户名”, “密码”)。
use admin
db.auth(“admin”, “admin”);
之后就可以在Shell进行权限管理,也就是说可以创建和维护用户信息了。
注意,由于admin只拥有userAdminAnyDatabase权限,所以无法进行一些非管理性质的操作。比如admin可以通过show users命令查询当前MongoDB的用户信息,但无法用show collections来查看数据库的集合信息,也无法对这些集合进行任何读写操作。
2.3、创建业务数据库及其用户
创建一个名为app的库用于存放业务数据,并为其创建一个用户dev来负责管理数据库里面的数据。dev用户拥有app库的读写权限。同样,你应该先在Shell中用admin进行认证,然后在调用db.createUser命令创建用户。
use admin
db.auth(“admin”, “admin”)
use app
db.createUser({
user: “dev”,
pwd: “dev”,
roles: [ { role: “readWrite”, db: “app” } ]
})
在这里,要创建dev用户之前,先切换到app数据库,然后再创建用户,并为用户赋予readWrite权限,并指定为app数据库,该设定代表用户拥有读取app数据库一般数据的权限。
权限设定完毕之后,再通过db.auth命令切换到dev用户,就可以对app库进行数据读写操作了。
use app
db.auth(“dev”, “dev”)
三、安装使用客户端控制管理软件
如果觉得使用MongoDB的Shell很麻烦,想使用诸如Navicat这样的数据库管理工具,那么可以使用Robomongo。
3.1、下载安装程序
可以到Robomongo的官网下载,地址为https://robomongo.org/。
3.2、链接数据库
打开Robomongo,打开菜单File->Connect,点击Create按钮打开Connection Settings界面,切换到Connection选项卡,填写链接名称(随便填),数据库地址和端口号,然后点击Test按钮测试连接是否连通,如果无法连通,请检查一下服务器的防火墙设置等可能出现的情况。接下来,如果你的数据库开启了安全性模式,那么请切换到Authentication选项卡,勾上Perform authentication,数据库不用填,填写你的用户名、密码以及认证模式(如果设置的时候没有特别指明的话可以不管,按照默认即可)。所有信息都填写完毕之后点击保存按钮保存设置,回到MongoDB Connections界面,选择刚才创建的数据库连接,点击连接按钮即,如果一切正常就可以看到数据库的信息和内容了。
四、在PHP下使用MongoDB
如果你想要在PHP下使用MongoDB的话,必须先安装MongoDB的PHP扩展驱动
$ sudo pecl install mongo
使用php的pecl安装命令必须保证网络连接可用以及root权限。
安装手册
如果你想通过源码来编译扩展驱动。你必须手动编译源码包,这样做的好是最新修正的bug包含在源码包中。
你可以在Github上下载MongoDB PHP驱动包。访问github网站然后搜索”mongo php driver”(下载地址:https://github.com/mongodb/mongo-php-driver),下载该源码包,然后执行以下命令:
$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
$ cd mongodb-mongodb-php-driver-<commit_id>
$ phpize
$ ./configure
$ sudo make install
如果你的php是自己编译的,则安装方法如下(假设是编译在/usr/local/php目录中):
$ tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz
$ cd mongodb-mongodb-php-driver-<commit_id>
$ /usr/local/php/bin/phpize$ ./configure –with-php-config=/usr/local/php/bin/php-config
$ sudo make install
执行以上命令后,你需要修改php.ini文件,在php.ini文件中添加mongo配置,配置如下:
extension=mongo.so
修改完配置之后,再重启一下apache服务就完成扩展驱动的安装了
service httpd restart