MongoDB由C++语言编写,是一个基于分布式文件存储的数据库,目的在于为web应用提供可扩展的高性能数据存储解决方案。它是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
关系数据库与Mongodb的对比
传统的关系数据库一般由数据库(Database)、表(Table)、记录(Record)三层组成;而Mongodb是由数据库(Database)、集合(Collection)、文档对象(Document)三层组成。
安装Mongodb
1.下载Mongodb
cd /usr/local/src
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.4.tgz
2.首先创建用户并解压
useradd mgdb
tar -zxvf mongodb-linux-x86_64-3.6.4.tgz -C /home/mgdb
vim /etc/profile
export PATH=/home/mgdb/mongodb/bin:$PATH
chown -R mgdb.mgdb mongodb
3.修改配置文件
vim /etc/mongod.conf
###日志存储位置
systemLog:
destination: file
path: /home/mgdb/mongodb/mongod.log
logAppend: true
storage:
##journal配置
journal:
enabled: false
##数据文件存储位置
dbPath: /home/mgdb/mongodb/data/db
##是否一个库一个文件夹
directoryPerDB: true
##数据引擎
engine: wiredTiger
##WT引擎配置
wiredTiger:
engineConfig:
##WT最大使用cache(根据服务器实际情况调节4~8)
# cacheSizeGB: 4
##是否将索引也按数据库名单独存储
directoryForIndexes: true
##表压缩配置,数据压缩算法,可选值“none”、“snappy”、“zlib”
collectionConfig:
blockCompressor: none
##索引配置
indexConfig:
prefixCompression: true
##使mongo进程成为系统集成(父id为1)
processManagement:
fork: true
pidFilePath: /home/mgdb/mgdbpid/mongod.pid
##端口配置,将默认端口设为10689(默认为27017)
net:
port: 10689
bindIp: xxx.xxx.xxx.xxx
# maxIncomingConnections: 65536
wireObjectCheck: true
ipv6: false
#security:
#keyFile: /data/mongokey
#authorization: enabled
# enableLocalhostAuthBypass: true
5.修改内核参数
echo
never >
/sys/kernel/mm/transparent_hugepage/enabled
echo
never >
/sys/kernel/mm/transparent_hugepage/defrag
vim
/etc/security/limits
.conf
//
加入
mongod soft nofile 64000
mongod hard nofile 64000
mongod soft nproc 32000
mongod hard nproc 32000
6.准备启动mongodb
建立一个进程文件夹
su - mgdb
mkdir mgdbpid
mongod -f /etc/mondod.conf
此时可以查看日志,看是否启动成功。
命令行连接
mongo xxx.xxx.xxx.xxx:10689
创建管理员用户
use admin
db.createUser({user: "admin",pwd: "123456",roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]})
退出并修改配置文件,将里边的security注释取消,并重新启动
此时再这样mongo xxx.xxx.xxx.xxx:10689就连接不上了,需要采用以下命令连接
mongo -uadmin -p --host xxx.xxx.xxx.xxx --port 10689 --authenticationDatabase "admin"
原文地址:http://blog.51cto.com/jack88/2113537