编辑/etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]name=MongoDB Repositorybaseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/gpgcheck=0enabled=1
执行
yum install -y mongodb-org
二、配置
编辑/etc/mongod.conf
# mongod.conf# for documentation of all options, see:# http://docs.mongodb.org/manual/reference/configuration-options/# where to write logging data.systemLog:destination: filelogAppend: truepath: /var/log/mongodb/mongod.log# Where and how to store data.storage:dbPath: /data/mongojournal:enabled: true# engine:# mmapv1:# wiredTiger:# how the process runsprocessManagement:fork: true # fork and run in backgroundpidFilePath: /var/run/mongodb/mongod.pid # location of pidfile# network interfacesnet:port: 27017bindIp: 127.0.0.1,<内网IP> # Listen to local interface only, comment to listen on all interfaces.注意不要逗号前后不要有空格#security:#operationProfiling:#replication:#sharding:## Enterprise-Only Options#auditLog:
执行
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabledecho never > /sys/kernel/mm/transparent_hugepage/defrag
编辑/etc/rc.local,添加
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabledecho never > /sys/kernel/mm/transparent_hugepage/defrag
编辑vi /etc/security/limits.d/99-mongodb-nproc.conf
# Default limit for number of user's processes to prevent# accidental fork bombs.# See rhbz #432903 for reasoning.* soft nproc 35000root soft nproc unlimited
三、防火墙
iptables -I INPUT 10 -s <允许ip> -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -d <允许ip> -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT
四、这样子启动:
mongod --config /etc/mongod.conf
进入mongodb的shell模式:
/usr/local/mongodb/bin/mongo
查看数据库列表:
show dbs
查看当前db版本:
db.version();
五、增加管理员权限:
userAdminAnyDatabase 这个角色拥有分配角色和用户的权限,但没有查写的缺陷
root 这是超级管理员
readWrite 有读写权限
read 有读权限
进入shell模式:
/usr/local/mongodb/bin/mongo
use admin //切换到admin数据库
db.createUser({user: “root”,pwd: “testMongoDB2016”,roles:[{role:”root”, db:”admin”}]});db.createUser({user: “mongoRoot”,pwd: “testMongoDB2016”,roles:[{role:”userAdminAnyDatabase”, db:”admin”}]});
验证一下,在哪里注册用户的要去哪个db里认证:
db.auth(“mongoRoot”, “testMongoDB2016”)
此后可以用这个mongoRoot账号去创建某一数据库管理账号:
db.createUser({user:”hhq163”,pwd:”test123456”,roles:[{“role”:”readWrite”,”db”:”admin”}]})
但发现此时增加的账号不能在客户端登录,原因是mongodb版本错了:
先退出 mongod 服务
use admindb.auth(“root”, “testMongoDB2016”)db.shutdownServer()
再在无认证情况下打开 mongod
use admin
db.dropUser(“hhq163”)
db.system.version.update({ “_id”:”authSchema”},{$set:{“currentVersion”:3}})
db.createUser({user:”hhq163”,pwd:”test123456”,roles:[{“role”:”readWrite”,”db”:”admin”}]})
再以认证的形式启动mongodb
如果需要创建某一个新DB的账号:
需要在shell下执行:
use TestDBdb.createUser({user:”hhq163”,pwd:”test123456”,roles:[{“role”:”readWrite”,”db”:”TestDB”}]})
vim /usr/local/mongodb/bin/mongodb.conf
在文件末尾增加以下这一行:
auth=true
8、关闭数据库服务器:
use admin
db.shutdownServer()
如果开户安全认证,则要先认证:
use admin
db.auth(“root”, “testMongoDB2016”)
db.shutdownServer()