date: 2020-03-16title: MongoDB——筑基期 #标题
tags: MongoDB #标签
categories: mongodb # 分类

接触mongodb第一天,需要做些什么?来来来…..看这里。
如果某个技术自己之前没有接触过,那么你必定要去它的官网溜一圈,这次也一样:mongodb官网

关于mongodb的功能特性,在知乎上看了一个写的蛮好的,可以去看一下mongodb是什么?

部署mongodb

下载并解包

  1. [root@mongo src]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.3.tgz
  2. [root@redis src]# tar zxf mongodb-linux-x86_64-rhel70-4.2.3.tgz
  3. [root@mongo src]# mv mongodb-linux-x86_64-rhel70-4.2.3 /usr/local/mongo

添加环境变量

  1. [root@mongo src]# echo 'export PATH=/usr/local/mongo/bin/:${PATH}' >> /etc/profile
  2. [root@mongo src]# source /etc/profile

定义配置文件

  1. [root@mongo src]# mkdir -p /data/mongodb/27017 # 创建工作路径
  2. [root@mongo src]# cat /data/mongodb/27017/mongodb.conf # 主配置文件如下
  3. systemLog: # 日志相关
  4. destination: file
  5. logAppend: true # 日志写入模式为追加
  6. path: /data/mongodb/27017/mongodb.log # 定义日志文件
  7. storage: # 定义存储相关
  8. dbPath: /data/mongodb/27017/ # 数据存储路径
  9. journal:
  10. enabled: true
  11. processManagement: # 进程管理相关,fork表示预派生
  12. fork: true
  13. net:
  14. port: 27017 # 监听端口
  15. bindIp: 0.0.0.0 # 监听地址

启动mongodb

  1. # 创建系统用户并更改属主
  2. [root@mongo ~]# useradd mongodb -s /sbin/nologin
  3. [root@mongo ~]# chown -R mongodb.mongodb /usr/local/mongo/ /data/mongodb/
  4. # 使用普通用户启动
  5. [root@mongo ~]# su -s /bin/bash -c "mongod -f /data/mongodb/27017/mongodb.conf" mongodb
  6. about to fork child process, waiting until server is ready for connections.
  7. forked process: 62064
  8. child process started successfully, parent exiting

确定端口在监听

  1. [root@mongo ~]# ss -lnpt | grep 27017
  2. LISTEN 0 128 *:27017 *:* users:(("mongod",pid=62064,fd=11))

登录到mongodb

  1. [root@mongo ~]# mongo --host 192.168.20.2 --port 27017

如果系统没有优化过相关配置,那么在第一次登录时大多会报以下warning事项(如果不是使用普通用户启动,还会多报一个用户相关的warning):
MongoDB——筑基期 - 图1

现在开始解决这些warning。。。

禁止内存巨大页

  1. [root@mongo ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
  2. [root@mongo ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
  3. # 写入以下文件并添加执行权限,以防止重启后失效
  4. [root@mongo ~]# tail -2 /etc/rc.d/rc.local # 写入下面两行配置
  5. echo 'never' >/sys/kernel/mm/transparent_hugepage/enabled
  6. echo 'never' >/sys/kernel/mm/transparent_hugepage/defrag
  7. [root@mongo ~]# chmod +x /etc/rc.d/rc.local

WARNING: Access control is not enabled for the database

  1. [root@mongo ~]# mongo # 登录到mongodb,默认为本机的27017端口
  2. # 创建用户
  3. > use admin
  4. > db.createUser(
  5. ... {
  6. ... user: "myUserAdmin",
  7. ... pwd: "abc123",
  8. ... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  9. ... }
  10. ... )
  11. > db.shutdownServer() # 关闭数据库
  12. > exit
  13. # 启动mongodb的选项中增加“--auth”选项。开启认证模式
  14. [root@mongo ~]# su -s /bin/bash -c "mongod --auth -f /data/mongodb/27017/mongodb.conf" mongodb
  15. [root@mongo ~]# mongo # 再次登录到数据库,就没有warning信息了,但是需要认证才可对数据库进行操作
  16. MongoDB shell version v4.2.3
  17. connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssap
  18. Implicit session: session { "id" : UUID("2cad3643-3d75-41d3-9011-a91
  19. MongoDB server version: 4.2.3
  20. > show databases # 在认证之前不会查看到什么信息
  21. > use admin # 必须进入admin库进行认证,否则会认证失败
  22. > db.auth('myUserAdmin','abc123') # 使用刚才新建的用户进行认证
  23. 1
  24. > show databases # 即可查看到库信息
  25. admin 0.000GB
  26. config 0.000GB
  27. local 0.000GB

mongodb基础指令

查看所有数据库

  1. > show dbs
  2. admin 0.000GB
  3. config 0.000GB
  4. local 0.000GB

切换数据库

  1. > use admin

显示所有表

  1. > show collections

显示数据库状态信息

  1. > db.stats()

显示集合表状态信息

  1. > db.numbers.stats()

停止数据库

  1. > db.shutdownServer()

获取数据库操作命令

  1. > db.help

获取表操作命令

  1. > db.foo.help

mongodb概念解析

参考菜鸟教程