mkdir -p /data/mongo
groupadd mongodb
useradd -g mongodb mongodb
tar zxvf mongodb-linux-x86_64-rhel70-4.2.14.tgz -C /usr/local/
ln -s /usr/local/mongodb-linux-x86_64-rhel70-4.2.14 /usr/local/mongodb
chown -R mongodb:mongodb /usr/local/mongodb/
chown -R mongodb:mongodb /data/mongo
# 添加文件打开数和mongod用户进程连接数
cat >> /etc/security/limits.conf << EOF
* soft nofile 65536
* hard nofile 65536
mongod soft nproc 32768
mongod hard nproc 32768
EOF
cat >> /etc/systemd/system.conf << EOF
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
EOF
# 禁用Transparent Huge Pages
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
cat >> /etc/rc.local << EOF
if test -f /sys/kernel/mm/transparent_hugepage/enabled;then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag;then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
EOF
cat > /etc/mongod.cnf << EOF
port=20001
fork=true
journal=true
maxConns=20000
logappend=true
bind_ip=0.0.0.0
dbpath=/data/mongo
logpath=/data/mongo/mongo.log
unixSocketPrefix=/tmp
pidfilepath = /data/mongo/mongod.pid
#auth=true
oplogSize=10240
directoryperdb=true
storageEngine=wiredTiger
wiredTigerCacheSizeGB = 1
wiredTigerStatisticsLogDelaySecs = 0
wiredTigerJournalCompressor = snappy
wiredTigerDirectoryForIndexes = true
wiredTigerCollectionBlockCompressor = snappy
wiredTigerIndexPrefixCompression = 1
EOF
# 修改用户组权限
chown mongodb:mongodb /etc/mongod.cnf
启动mongo程序
/usr/local/mongodb/bin/mongod --config /etc/mongod.cnf
添加mongodb命令到环境变量
echo "export PATH=\$PATH:/usr/local/mongodb/bin">>/etc/profile
source /etc/profile
# 使用systemctl 来管理 mongod
cat > /etc/systemd/system/mongodb.service <<EOF
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /etc/mongod.cnf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /etc/mongod.cnf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
#添加可执行权限:
chmod 755 /etc/systemd/system/mongodb.service
#重载 systemctl units
systemctl daemon-reload
#设置为开机自启动
systemctl enable mongodb.service
# 登录 mongo
mongo --host 127.0.0.1 --port 20001 admin
添加超级管理员账号
> use admin;
> db.createUser({user:"root",pwd:"mima123456",roles:[{role:"root",db:"admin"}]})
把配置文件 #auth 注释去掉,重启mongodb
/usr/local/mongodb/bin/mongod --config /etc/mongod.cnf --shutdown
# 登录mongodb,进行密码认证
mongo --host 127.0.0.1 --port 20001 -u root -p mima123456 admin
或者
mongo --host 127.0.0.1 --port 20001 admin
use admin;
db.auth('root','mima123456')
创建测试库:
use test_db1
db.mycol1.insert({
_id: 100,
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by: 'yiibai tutorials',
url: 'http://www.yiibai.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100,
})
use test_db2
db.mycol12.insert({
_id: 100,
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by: 'yiibai tutorials',
url: 'http://www.yiibai.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100,
})
use test_db3
db.mycol13.insert({
_id: 100,
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by: 'yiibai tutorials',
url: 'http://www.yiibai.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100,
})
# 创建应用账号
use test_db1
db.createUser( {user: "test_user",pwd: "mima123456",roles:[ { role: "readWrite", db: "test_db1" } ]});
用户新增数据库权限:
db.grantRolesToUser('test_user',[{role:'readWrite',db:'test_db2'}])
db.grantRolesToUser('test_user',[{role:'readWrite',db:'test_db3'}])
或者:
db.grantRolesToUser('test_user',[{role:'readWrite',db:'test_db2'},
{role:'readWrite',db:'test_db3'}
])
删除用户:
use test_db1
db.dropUser("test_user")