启动&关闭
三种启动方式
1. mongod --dbpath=/data/db 直接启动
2. mongod -f mongod.conf 通过配置文件启动
3. mongod --dbpath=/data/db --logpath=/data/log/example1.log --fork 使用Daemon启动
# 前两种和第三种启动方式不同点在:前两点只要启动mongodb的命令进程session关闭,mongodb也会停止
推荐结合2和3方法进行启动,配置文件如下
#启动方式:mongod -f startMongoDb.conf
#startMongoDb.conf
#数据库数据存放目录
dbpath=/data/example1_db
#数据库日志存放目录
logpath=/data/log/example1_db.log
#以追加的方式记录日志
logappend=true
#端口号 默认为27017
port=27017
#以后台方式运行进程
fork=true
#开启用户认证
#关闭http接口,默认关闭http端口访问
nohttpinterface=true
#mongodb所绑定的ip地址
bind_ip=127.0.0.1
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
#每个DB存放在独立的目录中
directoryperdb=true
关闭
#使用MongoDB的shell客户端进行关闭
$ mongo
> use admin
> db.shutdownServer()
#Linux发送命令
$ ps -A |grep mongod #查找mongod对应的PID
$ kill -2 PID #发送关闭命令
用户管理
注意:
1. MongoDB v3.0开始与之前版本有区别,这里介绍的是v3.0新的方法
2. 刚安装完MongoDB,先关闭auth认证,创建完用户再打开
3. 未添加任何用户前,admin库是隐藏的,添加用户后才显示
4. 注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth)。*
新建用户
# 我们需要创建一个拥有Grant的用户,用于管理其他账户
> use admin
> db.createUser(
... {
... user: "dba",
... pwd: "dba",
... roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
... }
... )
mongodb内置了一些角色:
1. 数据库用户角色:read、readWrite;
2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
4. 备份恢复角色:backup、restore;
5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
6. 超级用户角色:root
7. 内部角色:__system
具体说明:
Read:允许用户读取指定数据库
readWrite:允许用户读写指定数据库
dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
root:只在admin数据库中可用。超级账号,超级权限
用户验证
# MongoDB需要开启auth选项
> use admin
> db.auth('dba','dba')
再次提醒:账户在哪个库授权,就必须在哪个库验证 例子说明
修改权限
> use admin
> db.auth('dba','dba')
> db.updateUser(
... 'dba',
... {
... roles: [
... { role: 'root', db: 'admin' }
... ],
... pwd: 'dba123'
... }
... )
删除用户
> use admin
> db.dropUser('dba')