MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
一、安装mongodb
创建mongodb文件夹
[uaren@uafetblog01 ~]$ cd /usr/local/nlp/
[uaren@uafetblog01 nlp]$ mkdir mongodb
[uaren@uafetblog01 nlp]$ cd mongodb/
上传mongodb安装包
解压
[uaren@uafetblog01 mongodb]$ tar -xzvf mongodb-linux-x86_64-4.0.10.tgz
重命名
[uaren@uafetblog01 mongodb]$ mv mongodb-linux-x86_64-4.0.10 mongodb
[uaren@uafetblog01 mongodb]$ ll
total 200
drwxrwxr-x 2 uaren uaren 4096 Jun 24 14:03 bin
-rw-r--r-- 1 uaren uaren 30608 May 29 05:31 LICENSE-Community.txt
-rw-r--r-- 1 uaren uaren 16726 May 29 05:31 MPL-2
-rw-r--r-- 1 uaren uaren 2601 May 29 05:31 README
-rw-r--r-- 1 uaren uaren 60005 May 29 05:31 THIRD-PARTY-NOTICES
-rw-r--r-- 1 uaren uaren 81355 May 29 05:32 THIRD-PARTY-NOTICES.gotools
配置环境变量
[uaren@uafetblog01 mongodb]$ sudo vim /etc/profile
添加如下内容:
#mongodb
export PATH=/usr/local/nlp/mongodb/mongodb/bin:$PATH
添加完成之后退出保存
[uaren@uafetblog01 mongodb]$ source /etc/profile
创建数据库目录
[uaren@uafetblog01 mongodb]$ touch mongodb.conf
[uaren@uafetblog01 mongodb]$ mkdir data
[uaren@uafetblog01 mongodb]$ mkdir logs
[uaren@uafetblog01 mongodb]$ cd logs
[uaren@uafetblog01 logs]$ touch mongodb.log
修改mongodb配置文件
[uaren@uafetblog01 mongodb]$ vim mongodb.conf
#端口
port=20881
#数据库存文件存放目录
dbpath= /usr/local/nlp/mongodb/mongodb/data
#日志文件存放路径
logpath= /usr/local/nlp/mongodb/mongodb/logs/mongodb.log
#使用追加的方式写日志
logappend=true
#以守护进程的方式运行,创建服务器进程
fork=true
#最大同时连接数
maxConns=100
#不启用验证
noauth=true
#每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据
journal=true
#即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。
#存储引擎有mmapv1、wiretiger、mongorocks
storageEngine=wiredTiger
#这样就可外部访问了,例如从win10中去连虚拟机中的MongoDB
bind_ip = 0.0.0.0
如果文件没有读写权限
设置文件夹权限
$ chmod 777 data
$ chmod 777 logs
启动mongodb
最新版本mongodb已经将–config 修改为 -f
[uaren@uafetblog01 mongodb]$ cd bin
新版启动
[uaren@uafetblog01 bin]$ mongod -f ../mongodb.conf
老板启动
[uaren@uafetblog01 bin]$ mongod --config ../mongodb.conf
二、配置账号和密码
MongoDB用户类型
MongoDB的用户分为两种,一种是admin用户,另一种是特定数据库用户
admin用户拥有最高的权限,而特定数据库用户则只能访问特定的数据库。当MongoDB的admin库里没有任何用户的时候,也就是说整个MongoDB没有一个MongoDB用户的时候,即便–auth权限需求打开了,用户还是可以通过localhost界面进入MongoDB进行用户设置,否则的话整个MongoDB就完全没法访问了。而当这个用户创建完成之后,之后的用户登录和操作就需要授权了,不是直接登录就能使用的了
MongoDB有一个比较奇怪的设置是,即便是一个admin用户,授权也必须在admin数据库下进行,而不能在其他数据库下进行。而授权之后admin用户就可以在任何数据库下进行任何操作了。当然数据库级别的用户在他自己的数据库下授权之后是不能到其他数据库进行操作的
新建数据库并设置用户名密码
官网操作
https://docs.mongodb.com/v3.0/tutorial/manage-users-and-roles/
- 建数据库之前先创建admin账号,然后用admin账号创建其他用户
use admin
db.createUser(
{
user: "root",
pwd: "uaren",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" }
]
}
)
- 授权
db.auth("root", "uaren" )
- 修改配置文件mongodb.conf
打开mongodb中的配置文件mongodb.conf
添加
auth=true
[uaren@uafetblog01 mongodb] vim mongodb.conf
#端口
port=20881
#数据库存文件存放目录
dbpath= /usr/local/nlp/mongodb/mongodb/data
#日志文件存放路径
logpath= /usr/local/nlp/mongodb/mongodb/logs/mongodb.log
#使用追加的方式写日志
logappend=true
#以守护进程的方式运行,创建服务器进程
fork=true
#最大同时连接数
maxConns=100
#不启用验证
#noauth=true
#开启权限认证
auth=true
#每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据
journal=true
#即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint点,然后重放后续的journal日志来恢复。
#存储引擎有mmapv1、wiretiger、mongorocks
storageEngine=wiredTiger
#这样就可外部访问了,例如从win10中去连虚拟机中的MongoDB
bind_ip = 0.0.0.0
- 保存 重启
[uaren@uafetblog01 mongodb]$ pkill -9 mongodb
[uaren@uafetblog01 mongodb]$ ./bin/mongod -f mongodb.conf
重新连接 输入账号和密码即可
案例. use 要创建的新数据库名称
use ccc
db.createUser({user:"cc",pwd:"cc777",roles:[{role:"dbOwner",db:"ccc"}]})
说明:
db.createUser({user:"要创建的新数据库用户名",pwd:"要创建的新数据库密码",roles:[{role:"dbOwner",db:"要创建的新数据库名称"}]})
三、Mongodb怎样进入web控制台
我在浏览器里输入mongodb所在机器IP及端口号:http://127.0.0.1:20881/
页面出现:
It looks like you are trying to access MongoDB over HTTP on the native driver port.
出错原因:
没有以–httpinterface参数启动mongodb,且应该以你的mongodb端口号+1000进行访问。
解决办法:
以–httpinterface参数启动mongodb
如:
mongod --dbpath=/data/server/mongodb/data --fork --logpath=/data/server/mongodb/logs --auth --httpinterface
参数解释:
dbpath 数据存储目录
ogpath 日志存储文件
port 运行端口(默认27017)
fork 后台静默运行
auth 启用远程主机的身份验证
httpinterface 启动web