[关闭]
@Mr-13 2020-11-26T11:53:27.000000Z 字数 4912 阅读 95

MongoDB下载安装

mongodb Linux



前言:什么是mogodb

  MongoDB 是由C++语言编写的,是一个基于分布式文件存储的 开源数据库系统
  MongoDB 可在 高负载 的情况下,添加更多的节点,可以 保证服务器性能
  MongoDB 可为Web应用提供 可扩展高性能 数据存储解决方案。
  MongoDB 将数据存储在灵活的 json 文档中,这意味着可以直接得到从 文档到文档 的数据、结构等。
  MongoDB 是免费使用的(MongoDB分 社区版 [在所有环境下都免费] 和企业版[在开发环境免费,生产环境收费] 两个版本)。
  MongoDB 数据库具有 可伸缩性灵活性,可帮助你 快速查询索引 你需要数据。

上面都是抄的,不重要,了解一下就好;具体mongodb的优势慢慢学习


一、下载mongodb压缩包文件

  mongodb官网地址:https://www.mongodb.com/,按照如下操作复制下载链接:

  如下图,在这里根据自己的需要,选择下载对应系统的MongoDB数据库版本

  在MongoDB版本中:
  偶数 表示正式版【可用于生产环境】;如:3.2.x、3.4.x、3.6.x
  奇数 表示开发版,如:3.1.x、3.3.x、3.5.x

  如上图,选择 community server,根据自己的操作系统版本(我使用的Centos7.4)、以及需要下载的mongodb(我这里选择的是4.2.10),以及需要的下载文件格式(我这里选择的是tgz压缩包),选好之后,点击右侧的 copy link 复制下载链接地址。

  回到xshell,使用刚才复制的链接下载压缩包:

  1. $ cd /rcs
  2. $ wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.10.tgz


   


二、解压、拷贝、重命名

  解压压缩包,解压完成之后,可以删除压缩包文件。

  1. $ tar -xvzf mongodb-linux-x86_64-rhel70-4.2.10.tgz

  为了方便维护管理,重命名解压之后的文件夹名称;文件夹名称根据实际情况确定,不要直接复制执行

  1. $ mv mongodb-linux-x86_64-rhel70-4.2.10 mongodb

  配置mongodb环境变量,提醒:具体路径根据实际情况来!

  1. # 向/etc/profile文件末尾追加行
  2. $ echo "export PATH=$PATH:/data/mongodb/bin" >> /etc/profile
  3. # 执行/etc/profile文件使刚才设置的环境变量生效
  4. $ source /etc/profile
  5. # 打印一下环境变量,看一下设置是否生效
  6. $ echo $PATH


  
  


三、配置mongodb

  进入mongodb目录,进行所需的子目录、及文件创建创建:

  1. # data : 数据库文件存放目录
  2. # log : 日志文件存放路径
  3. # conf : 配置文件存放路径
  4. $ mkdir /data/mongodb/{data,log,conf,pid}
  5. $ touch /data/mongodb/log/mongod.log # 日志文件
  6. $ touch /data/mongodb/conf/mongo.conf # 配置文件
  7. $ touch /data/mongodb/pid/mongod.pid # pid文件

  设置文件夹权限

  1. $ cd /data/mongodb
  2. $ chmod 777 data
  3. $ chmod 777 log
  4. $ chmod 777 pid

  编辑刚才创建的配置文件 /data/mongodb/conf/mongodb.conf 内容如下:

  1. # 数据库文件存放目录
  2. dbpath=/data/mongodb/data
  3. # 日志文件存放目录
  4. logpath=/data/mongodb/log/mongodb.log
  5. # 端口
  6. port=27017
  7. # 使用追加的方式写日志
  8. logappend=true
  9. # 以守护进程的方式运行,创建服务器进程
  10. fork=true
  11. # 同时最大连接数
  12. maxConns=100
  13. # 不起用验证
  14. noauth=true
  15. # 每次写入会记录一条操作日志(通过journal可以重新构造出写入的数据)
  16. # 即使宕机,启动时wiredtiger会先将数据恢复到最近一次的checkpoint,然后重放后续的journal日志来恢复
  17. journal=true
  18. # 存储引擎有mmapv1,wiredtiger,mongorocks
  19. storageEngine=wiredTiger
  20. # 开放外网访问
  21. bind_ip=0.0.0.0

  或者YML格式配置文件(和上面的命令行格式配置文件效果一样):
  具体的配置内容:路径、文件名根据实际情况定义,不要直接复制粘贴!

  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: /data/mongodb/log/mongodb.log
  9. # Where and how to store data.
  10. storage:
  11. dbPath: /data/mongodb/data
  12. journal:
  13. enabled: true
  14. wiredTiger:
  15. engineConfig:
  16. cacheSizeGB: 2
  17. # how the process runs
  18. processManagement:
  19. fork: true # fork and run in background
  20. pidFilePath: /data/mongodb/pid/mongod.pid # location of pidfile
  21. timeZoneInfo: /usr/share/zoneinfo
  22. # network interfaces
  23. net:
  24. port: 27017
  25. bindIp: 0.0.0.0 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or, alternatively, use the net.bindIpAll setting.
  26. #security:
  27. #operationProfiling:
  28. #replication:
  29. #sharding:
  30. ## Enterprise-Only Options

.  


四、服务启动、关闭

  如上步骤后,开始启动服务:

  1. $ cd ~
  2. $ mongod --config /data/mongodb/conf/mongodb.conf

  如果出现上图提示,说明安装启动成功;上图同时打印出了mongodb服务进程的进程号 20090
  
  关闭mongodb比较粗暴,直接kill就好:

  1. $ kill [进程号]


五、设置mongodb密码

  在实际生产环境中,我们不可能把没有登录验证的数据库暴露在公网环境下;如果需要设置数据库密码操作如下:
  

1、修改配置文件,添加身份验证配置节

  先修改配置文件 /data/mongodb/conf/mongodb.conf,把之前的 noauth 配置节注释掉,添加如下配置节:

  1. # noauth=true
  2. auth=true


.
  

2、关闭、并重启服务


.
  

3、创建账户

  mongodb密码和传统数据如mysql等有些区别:mongodb的用户名和密码是基于特定数据库的,而不是基于整个系统的;所以所有数据库db都需要单独设置密码。

  1. $ cd ~
  2. $ mongo # 进入mongo数据库
  3. > show dbs # 查看存在的数据;在mongo“新版本”里(没有查具体从哪个版本开始)没有admin库,但不妨碍继续操作
  4. > use admin # 切换到admin库
  5. # 创建管理员账户
  6. > db.createUser({user:"admin",pwd:"admin_pass",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})

  mongodb中的用户是基于身份 role 的,该管理员账户的role是 userAdminAnyDatabase
  userAdmin 代表“账户管理员”身份,AnyDatabase 代表可以管理任何数据库。
  admin用户用于管理其他数据库账户,不能进行关闭数据库等操作。
  
  用户创建成功会有如下图提示,创建失败则会打印具体原因:
  

  也可以使用如下命令验证用户创建是否成功,如果返回 1 ,则表示存在该用户

  1. # 格式:db.auth([用户名],[密码])
  2. > db.auth("admin","admin_pass")

  admin 账号创建好之后,可以继续根据需要创建其他的数据库账号了:

  1. # 进入admin数据库
  2. > use admin
  3. > db.auth("admin","admin_pass")
  4. --------------------------------------------------------------------------
  5. # 创建超级管理员root账户
  6. # 角色:root;root角色用于关闭数据库。
  7. > db.createUser({user: "root",pwd: "password", roles: [ { role: "root", db: "admin" } ]})
  8. # 数据库关闭命令:
  9. # db.shutdownServer()
  10. --------------------------------------------------------------------------
  11. # 创建数据库拥有者角色账户
  12. # 这时候一定,一定要切换到所在数据库上去创建用户,不然创建的用户还是属于admin。
  13. > use yourdatabase
  14. # role:dbOwner 代表数据库所有者角色,拥有最高该数据库最高权限。比如新建索引等
  15. > db.createUser({ user: "youruser", pwd: "yourpassword", roles: [{ role: "dbOwner", db: "yourdatabase" }] })
  16. --------------------------------------------------------------------------
  17. # 新建数据库读写账户
  18. # 该用户用于该数据的读写,只拥有读写权限
  19. > use yourdatabase
  20. > db.createUser({ user: "youruser2", pwd: "yourpassword2", roles: [{ role: "readWrite", db: "yourdatabase" }] })
  21. --------------------------------------------------------------------------
  22. # 删除用户
  23. # 删除账户必须由账号管理员来删,切换到admin角色
  24. > use admin
  25. > db.auth("admin","admin_pass")
  26. # 删除单个账户
  27. db.system.users.remove{(user:"******")}
  28. # 删除所有用户
  29. db.system.users.remove{()}

  现在数据的用户名和密码就建好了。
  可以使用:mongodb://youruser2:yourpassword2@localhost/yourdatabase来链接
.
  


六、数据库默认角色

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注