mongodb 安装
文件下载,解压
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
创建data目录和logs 目录
mkdir data
mkdir logs
创建 mongo.cnf 配置文件: vim mongo.cnf
#数据库
dbpath = /usr/local/mongodb/data
#日志文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log
#端口
port = 27017
#以守护线程的方式启用,即在后台运行
fork = true
#日志输出方式,使用追加的方式写日志
logappend = true
#PID File 的完整路径,如果没有设置,则没有PID文件
pidfilepath = /usr/local/mongodb/mongo.pid
#关闭http接口,默认关闭27018端口访问
#nohttpinterface = true
#声明这是一个集群的分片,默认端口是27018
#shardsvr = true
#设置每个数据库将被保存在一个单独的目录
#directoryperdb = true
#开启认证
#auth = true
#设开启简单的rest API,置后打开28017网页端口
#rest = true
#允许远程访问
bind_ip = 0.0.0.0
启动mongosb 命令
./mongod --config /usr/local/mongodb/mongdb.conf
显示所有库
show dbs
查看当前库
db
创建数据库
use test
创建用户和角色
# 先给 admin 库创建用户防止改变配置文件admin库不可用 root 是超级管理员
db.createUser({user:"admin",pwd:"admin",roles:[{role:"root",db:"admin"}]})
# 再回来给指定库创建用户
db.createUser({user:"test",pwd:"test",roles:[{role:"root",db:"test"}]})
内置角色:
-
数据库用户角色:read、readWrite;
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库 -
数据库管理角色:dbAdmin、dbOwner、userAdmin;
dbOwner: 该数据库的所有者,具有该数据库的全部权限。
dbAdmin:一些数据库对象的管理操作,但是没有数据库的读写权限
userAdmin:为当前用户创建、修改用户和角色。拥有userAdmin权限的用户可以将该数据库的任意权限赋予任意的用户。 -
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 -
备份恢复角色:backup、restore;
-
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 -
超级用户角色:root
root:只在admin数据库中可用。超级账号,超级权限
这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) -
内部角色:__system
删除创建的用户
db.dropUser('testuse')
角色创建成功之后需要先关掉mongodb
use admin
db.shutdownServer()
打开配置文件,开启认证,重启mongo
测试:
show collections
not authorized on test to execite command { listCollections:1.0 }
如上报错就成功,意思是要验证。
账号密码登录
db.auth('root','suozhao123')