编辑/etc/yum.repos.d/mongodb-org-3.4.repo

  1. [mongodb-org-3.4]
  2. name=MongoDB Repository
  3. baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
  4. gpgcheck=0
  5. enabled=1

执行

  1. yum install -y mongodb-org

二、配置

编辑/etc/mongod.conf

  1. # mongod.conf
  2. # for documentation of all options, see:
  3. # http://docs.mongodb.org/manual/reference/configuration-options/
  4. # where to write logging data.
  5. systemLog:
  6. destination: file
  7. logAppend: true
  8. path: /var/log/mongodb/mongod.log
  9. # Where and how to store data.
  10. storage:
  11. dbPath: /data/mongo
  12. journal:
  13. enabled: true
  14. # engine:
  15. # mmapv1:
  16. # wiredTiger:
  17. # how the process runs
  18. processManagement:
  19. fork: true # fork and run in background
  20. pidFilePath: /var/run/mongodb/mongod.pid # location of pidfile
  21. # network interfaces
  22. net:
  23. port: 27017
  24. bindIp: 127.0.0.1,<内网IP> # Listen to local interface only, comment to listen on all interfaces.注意不要逗号前后不要有空格
  25. #security:
  26. #operationProfiling:
  27. #replication:
  28. #sharding:
  29. ## Enterprise-Only Options
  30. #auditLog:

执行

  1. echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
  2. echo never > /sys/kernel/mm/transparent_hugepage/defrag

编辑/etc/rc.local,添加

  1. echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
  2. echo never > /sys/kernel/mm/transparent_hugepage/defrag

编辑vi /etc/security/limits.d/99-mongodb-nproc.conf

  1. # Default limit for number of user's processes to prevent
  2. # accidental fork bombs.
  3. # See rhbz #432903 for reasoning.
  4. * soft nproc 35000
  5. root soft nproc unlimited

三、防火墙

  1. iptables -I INPUT 10 -s <允许ip> -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
  2. iptables -A OUTPUT -d <允许ip> -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

四、这样子启动:

  1. mongod --config /etc/mongod.conf

进入mongodb的shell模式:

  1. /usr/local/mongodb/bin/mongo

查看数据库列表:

  1. show dbs

查看当前db版本:

  1. db.version();

五、增加管理员权限:

userAdminAnyDatabase 这个角色拥有分配角色和用户的权限,但没有查写的缺陷
root 这是超级管理员
readWrite 有读写权限
read 有读权限

进入shell模式:

  1. /usr/local/mongodb/bin/mongo

use admin //切换到admin数据库

  1. db.createUser(
  2. {
  3. user: root”,
  4. pwd: testMongoDB2016”,
  5. roles:[{role:”root”, db:”admin”}]
  6. }
  7. );
  8. db.createUser({
  9. user: mongoRoot”,
  10. pwd: testMongoDB2016”,
  11. roles:[{role:”userAdminAnyDatabase”, db:”admin”}]
  12. });

验证一下,在哪里注册用户的要去哪个db里认证:

  1. db.auth(“mongoRoot”, testMongoDB2016”)

此后可以用这个mongoRoot账号去创建某一数据库管理账号:

  1. db.createUser({user:”hhq163”,pwd:”test123456”,roles:[{“role”:”readWrite”,”db”:”admin”}]})

但发现此时增加的账号不能在客户端登录,原因是mongodb版本错了:
先退出 mongod 服务

  1. use admin
  2. db.auth(“root”, testMongoDB2016”)
  3. 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下执行:

  1. use TestDB
  2. db.createUser({user:”hhq163”,pwd:”test123456”,roles:[{“role”:”readWrite”,”db”:”TestDB”}]})

vim /usr/local/mongodb/bin/mongodb.conf
在文件末尾增加以下这一行:

  1. auth=true

8、关闭数据库服务器:
use admin
db.shutdownServer()

如果开户安全认证,则要先认证:
use admin
db.auth(“root”, “testMongoDB2016”)
db.shutdownServer()

分类: web

标签:   mongoDB