MongoDB
第1章 MongoDB部署:
1.1 下载地址:
? MongoDB官网:https://www.mongodb.com/
? CentOS6.X版本软件下载地址:https://www.mongodb.org/dl/linux/x86_64-rhel62
1.2 安装前的准备:
检查该版本是否支持你的操作系统
? 更多详情查看: https://docs.mongodb.com/manual/installation/
1.1.1 在root用户下关闭大页内存:
[[email protected] tools]# cat /etc/rc.local #!/bin/bash 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
其他系统关闭参照官方文档:
https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/
1.1.2 为什么要关闭呢?
Transparent Huge Pages (THP) is a Linux memory management system that reduces the overhead of Translation Lookaside Buffer (TLB) lookups on machines with large amounts of memory by using larger memory pages. However, database workloads often perform poorly with THP, because they tend to have sparse rather than contiguous memory access patterns. You should disable THP on Linux machines to ensure best performance with MongoDB.
1.2 MongoDB安装:
创建用户并修改密码:
groupadd -g 800 mongod useradd -u 801 -g mongod mongod echo 123456 |passwd --stdin mongod
创建目录结构:
mkdir -p /mongodb/bin mkdir -p /mongodb/conf mkdir -p /mongodb/log mkdir -p /mongodb/data
解压软件并上传到指定位置:
tar xf mongodb-linux-x86_64-3.2.8.tgz cd /server/tools/mongodb-linux-x86_64-3.2.8 cp * /mongodb/bin/
配置文件内容:
systemLog: destination: file path: "/mongodb/log/mongod.log" logAppend: true storage: journal: enabled: true dbPath: "/mongodb/data" processManagement: fork: true net: port: 27017 security: authorization: enabled
修改程序目录属主:
chown -R mongod.mongod /mongodb/
设置用户环境变量:
su - mongod vi .bash_profile export PATH=/mongodb/bin:$PATH source .bash_profile
第2章 管理MongoDB:
2.1 启动MongoDB:
mongod --dbpath=/mongodb/data --logpath=/mongodb/log/mongodb.log --port=27017 --logappend --fork
2.2 参数说明:
参数 |
参数说明 |
--dbpath |
数据存放路径 |
--logpath |
日志文件路径 |
--logappend |
日志输出方式 |
--port |
启用端口号 |
--fork |
在后台运行 |
--auth |
是否需要验证权限登录(用户名和密码) |
--bind_ip |
限制访问的ip |
--shutdown |
关闭数据库 |
2.3 登录数据库:
mongo MongoDB shell version: 3.2.8 connecting to: test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user > >
2.3.1 配置文件:
[[email protected] conf]$ vim mongodb.conf logpath=/mongodb/log/mongodb.log dbpath=/mongodb/data port=27017 logappend=1 fork=1 [[email protected] conf]$ pkill mongod [[email protected] conf]$ mongod -f /mongodb/conf/mongodb.conf about to fork child process, waiting until server is ready for connections. forked process: 1562 child process started successfully, parent exiting
2.3.2 yaml格式配置文件:
systemLog: destination: file path: "/application/mongodb/log/mongod.log" logAppend: true storage: journal: enabled: true dbPath: "/application/mongodb/data" processManagement: fork: true net: port: 27017
2.4 MongoDB多种关闭方式:
mongod -f /mongodb/conf/mongodb.conf shutdown 或者登陆到mongodb中,use到admin库下: admin> db.shutdownServer()
或
admin> db.adminCommand({shutdown:1})
第3章 MongoDB基本操作:
3.1 常用的命令种类:
db ----> 数据库和数据库对象管理类 rs. ----> 复制集有关管理命令 show ----> 查询数据库一些基本状态 sh. ----> 集群有关管理类命令
3.1.1 在客户端指定数据库进行连接(默认连接本机的test库)
[[email protected] conf]$ mongo 10.0.0.18/admin MongoDB shell version: 3.2.8 connecting to: 10.0.0.18/admin >
3.1.2 切库:
> use test switched to db test
3.1.3 查看当前数据库版本:
> db.version() 3.2.8
3.1.4 显示当前数据库:
> db test > db.getName() test
3.1.5 查看当前数据库状态:
> db.stats() { "db" : "jiang", "collections" : 1, "objects" : 0, "avgObjSize" : 0, "dataSize" : 0, "storageSize" : 4096, "numExtents" : 0, "indexes" : 1, "indexSize" : 4096, "ok" : 1 }
3.1.6 显示所有数据库:
> show databases jiang 0.000GB local 0.000GB > show dbs jiang 0.000GB local 0.000GB
第4章 数据管理:
4.1 创建集合(相当于create table)
方法一:
> db.createCollection('t1') { "ok" : 1 } > show tables t1
方法二:当插入一个文档的时候,一个集合就会自动创建
> db.t2.insert({name:"daya"}) WriteResult({ "nInserted" : 1 }) > show tables t1 t2
4.2 查看创建好的合集(库中的表):
> db.getCollectionNames() [ "t1", "t2" ] 4.3 查看表中内容:> db.t2.find() { "_id" : ObjectId("5ad69e4014cea9ca81c9ae44"), "name" : "daya" }
4.4 批量插入一万行数据:
> for(i=0;i<10000;i++){ db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()}); } WriteResult({ "nInserted" : 1 })
4.5 查询集合中有多少行数据:
> db.log.find().count() 10000
4.6 删除所有合集:
> db.log.remove({}) WriteResult({ "nRemoved" : 10000 })
4.7 查询集合存储信息:
> db.log.stats() # 查看数据状态 > db.log.dataSize() # 集合中数据的原始大小 > db.log.totalIndexSize() # 集合中索引数据的原始大小 > db.log.totalSize() # 集合中索引+数据压缩存储之后的大小 > db.log.storageSize() # 集合中数据压缩存储的大小
第5章 MongoDB用户管理:
MongoDB数据库默认是没有用户名及密码的,即无权限访问控制,为了方便数据库的管理和安全,需要创建数据库用户
5.1 用户的权限:
用户中权限的说明
权限 |
说明 |
Read |
允许用户读取指定数据库 |
readWrite |
允许用户读写指定数据库 |
dbAdmin |
允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile |
userAdmin |
允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 |
clusterAdmin |
只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 |
readAnyDatabase |
只在admin数据库中可用,赋予用户所有数据库的读权限 |
readWriteAnyDatabase |
只在admin数据库中可用,赋予用户所有数据库的读写权限 |
userAdminAnyDatabase |
只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 |
dbAdminAnyDatabase |
只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 |
root |
只在admin数据库中可用。超级账号,超级权限 |
5.2 用户创建语法:
{ user: "<name>", pwd: "<cleartext password>", customData: { <any information> }, roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ] }
user字段:用户的名字;
pwd字段:用户的密码;
cusomData字段:为任意内容,例如可以为用户全名介绍;
roles字段:指定用户的角色,可以用一个空数组给新用户设定空角色;
roles 字段:可以指定内置角色和用户定义的角色。
5.3 创建超级管理员用户:
> db.createUser( ... { ... user: "root", ... pwd: "root", ... roles: [ { role: "root", db: "admin" } ] ... } ... )
5.3.1 注意:
1. 创建管理员角色用户的时候,必须到admin下创建
2. 删除的时候也要到响应的库下操作
5.3.2 查看创建完成的用户:
> show users { "_id" : "admin.root", "user" : "root", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ] }
5.3.3 验证用户:
> db.auth('root', 'root') 1
5.3.4 用户创建完成后在配置文件中开启用户验证:
cat >>/mongodb/conf/mongodb.conf<<-'EOF' security: authorization: enabled EOF
5.3.5 重启数据库
mongod -f /mongodb/conf/mongodb.conf mongod -f /mongodb/conf/mongodb.conf --shutdown
5.3.6 登录数据库:
方法一: mongo 10.0.0.18/admin -uroot –proot 方法二: mongo 10.0.0.18/admin > db.auth('root', 'root') 1
5.4 自定义数据库
5.4.1 创建app数据库的管理员
> use app switched to db app > db.createUser( ... { ... user: "admin", ... pwd: "admin", ... roles: [ { role: "dbAdmin", db: "app" } ] ... } ... ) Successfully added user: { "user" : "admin", "roles" : [ { "role" : "dbAdmin", "db" : "app" } ] } > db.auth('admin','admin') 1
5.4.2 创建zabbix用户,可读可写权限
> db.createUser( ... { ... user: "zabbix", ... pwd: "zabbix", ... roles: ["readWrite"] ... } ... ) Successfully added user: { "user" : "zabbix", "roles" : [ "readWrite" ] } > db.auth('zabbix', 'zabbix') 1
5.4.3 创建一个zabbix库的只读用户test1用户
> db.createUser( ... { ... user: "test1", ... pwd: "test1", ... roles: ["read"] ... } ... )
5.4.4 删除用户:
> use zabbix switched to db zabbix > db.dropUser("test1") true
原文地址:http://blog.51cto.com/13520772/2105551
时间: 2024-11-02 00:55:48