date: 2020-03-16title: MongoDB——筑基期 #标题
tags: MongoDB #标签
categories: mongodb # 分类
接触mongodb第一天,需要做些什么?来来来…..看这里。
如果某个技术自己之前没有接触过,那么你必定要去它的官网溜一圈,这次也一样:mongodb官网。
关于mongodb的功能特性,在知乎上看了一个写的蛮好的,可以去看一下mongodb是什么?。
部署mongodb
下载并解包
[root@mongo src]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.3.tgz
[root@redis src]# tar zxf mongodb-linux-x86_64-rhel70-4.2.3.tgz
[root@mongo src]# mv mongodb-linux-x86_64-rhel70-4.2.3 /usr/local/mongo
添加环境变量
[root@mongo src]# echo 'export PATH=/usr/local/mongo/bin/:${PATH}' >> /etc/profile
[root@mongo src]# source /etc/profile
定义配置文件
[root@mongo src]# mkdir -p /data/mongodb/27017 # 创建工作路径
[root@mongo src]# cat /data/mongodb/27017/mongodb.conf # 主配置文件如下
systemLog: # 日志相关
destination: file
logAppend: true # 日志写入模式为追加
path: /data/mongodb/27017/mongodb.log # 定义日志文件
storage: # 定义存储相关
dbPath: /data/mongodb/27017/ # 数据存储路径
journal:
enabled: true
processManagement: # 进程管理相关,fork表示预派生
fork: true
net:
port: 27017 # 监听端口
bindIp: 0.0.0.0 # 监听地址
启动mongodb
# 创建系统用户并更改属主
[root@mongo ~]# useradd mongodb -s /sbin/nologin
[root@mongo ~]# chown -R mongodb.mongodb /usr/local/mongo/ /data/mongodb/
# 使用普通用户启动
[root@mongo ~]# su -s /bin/bash -c "mongod -f /data/mongodb/27017/mongodb.conf" mongodb
about to fork child process, waiting until server is ready for connections.
forked process: 62064
child process started successfully, parent exiting
确定端口在监听
[root@mongo ~]# ss -lnpt | grep 27017
LISTEN 0 128 *:27017 *:* users:(("mongod",pid=62064,fd=11))
登录到mongodb
[root@mongo ~]# mongo --host 192.168.20.2 --port 27017
如果系统没有优化过相关配置,那么在第一次登录时大多会报以下warning事项(如果不是使用普通用户启动,还会多报一个用户相关的warning):
现在开始解决这些warning。。。
禁止内存巨大页
[root@mongo ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
[root@mongo ~]# echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
# 写入以下文件并添加执行权限,以防止重启后失效
[root@mongo ~]# tail -2 /etc/rc.d/rc.local # 写入下面两行配置
echo 'never' >/sys/kernel/mm/transparent_hugepage/enabled
echo 'never' >/sys/kernel/mm/transparent_hugepage/defrag
[root@mongo ~]# chmod +x /etc/rc.d/rc.local
WARNING: Access control is not enabled for the database
[root@mongo ~]# mongo # 登录到mongodb,默认为本机的27017端口
# 创建用户
> use admin
> db.createUser(
... {
... user: "myUserAdmin",
... pwd: "abc123",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
> db.shutdownServer() # 关闭数据库
> exit
# 启动mongodb的选项中增加“--auth”选项。开启认证模式
[root@mongo ~]# su -s /bin/bash -c "mongod --auth -f /data/mongodb/27017/mongodb.conf" mongodb
[root@mongo ~]# mongo # 再次登录到数据库,就没有warning信息了,但是需要认证才可对数据库进行操作
MongoDB shell version v4.2.3
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssap
Implicit session: session { "id" : UUID("2cad3643-3d75-41d3-9011-a91
MongoDB server version: 4.2.3
> show databases # 在认证之前不会查看到什么信息
> use admin # 必须进入admin库进行认证,否则会认证失败
> db.auth('myUserAdmin','abc123') # 使用刚才新建的用户进行认证
1
> show databases # 即可查看到库信息
admin 0.000GB
config 0.000GB
local 0.000GB
mongodb基础指令
查看所有数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
切换数据库
> use admin
显示所有表
> show collections
显示数据库状态信息
> db.stats()
显示集合表状态信息
> db.numbers.stats()
停止数据库
> db.shutdownServer()
获取数据库操作命令
> db.help
获取表操作命令
> db.foo.help
mongodb概念解析
参考菜鸟教程