编辑/etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=0
enabled=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: file
logAppend: true
path: /var/log/mongodb/mongod.log
# Where and how to store data.
storage:
dbPath: /data/mongo
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# how the process runs
processManagement:
fork: true # fork and run in background
pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
# network interfaces
net:
port: 27017
bindIp: 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/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
编辑/etc/rc.local,添加
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo 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 35000
root soft nproc unlimited
三、防火墙
iptables -I INPUT 10 -s <允许ip> -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -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 admin
db.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 TestDB
db.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()