Mongodb
一、Mongodb
是一个基于分布式文件存储的开源数据库,在高负载情况下,可以添加节点,
将数据存储为仪个文档,类似Json 对象,所有存储在集合中的数据都是BSON格式。
二、Mongodb 安装
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
tar xf mongodb-linux-x86_64-3.0.6.tgz
mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb
echo “export PATH=/usr/local/mongodb/bin:\$PATH” >> /etc/profile
source /etc/profile
#设置配置文件
dbpath=/data/db
logpath=/data/app/mongodb/bin/mongo.log
logappend=true
fork=true
#auth = true #开启认证选择,把#去掉。
port=27017
#4.0版本需要开放IP
bind_ip = IP
#启动
nohup mongod -f mgdb.cnf &
#登录
mongo 127.0.0.1:27017/admin -u admin -p admin
三、Mongodb 权限
权限
1、MongoDB 是没有默认管理员账号,所以先要添加管理员账号,开启权限认证。
2、切换到admin 数据库,添加的账号才是管理员账号
3、用户只能在用户所在数据登录,包括管理员账号
4、管理可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认 证才可以。
MongoDB数据库角色
角色说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限作者。
__system 什么权限都有。
# 设置管理员
> use admin
> show collections
> db.createUser( { user: "admin", pwd: "mongodb:passok",
roles:
[
{ role: "userAdminAnyDatabase", db: "admin" }
] } )
Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
> show users
#添加普通用户
> use mydb
switched to db mydb
> db.createUser( { user: "tonny", pwd: "tonny@passok",
roles: [
{ role: "readWrite", db: "mydb" }
] } )
MongoDB 常用命令
show dbs #显示数据库列表
show collections #显示当前数据库中的集合
show users #显示用户
use db #切换当前数据库
db.foo.find({a:1}) #对于当前数据库中的foo集合进行查找,条件是数据中又一个属性叫a,且a的值为1
db.dropDatabase() #删除当前使用数据库
db.copyDatabase("mydb","temp","127.0.0.1") #将本机的mydb的数据复制到temp数据库中
db.getName() #查看用户
db.getMongo() #查看当前DB的连接机器地址