设为首页 加入收藏

TOP

mongodb进阶三之mongodb管理(二)
2015-11-21 01:52:06 来源: 作者: 【 】 浏览:2
Tags:mongodb 进阶 管理
" ] },
{ resource: { db: "", collection: "" }, actions: [ "find" ] }
],
roles:
[
{ role: "read", db: "admin" }
],
writeConcern: { w: "majority" , wtimeout: 5000 }
}
)
)

2.5:分配角色

用户分配角色使用grantRolesToUser命令。可以给用户分配各个数据库的各种管理权限。

use admin
db.grantRolesToUser(
"accountAdmin01",
[
{
role: "readWrite", db: "products"
},
{
role: "readAnyDatabase", db:"admin"
}
]
)

2.6:验证用户权限

验证用户的角色使用getRole命令。

use admin
db.getUser("accountUser01")
db.getRole( "siteRole01", { showPrivileges: true } )

2.7:修改用户访问权限

修改用户的访问权限revokeRolesFromUser命令。

use admin
db.grantRolesToUser(
"accountUser01",
[
{ role: "read", db: "records" }
]
)
db.revokeRolesFromUser(
"accountUser01",
[
{ role: "readWrite", db: "accounts" }
]
)

2.8:更改用户名密码

修改用户的密码changeUserPassword命令。

db.changeUserPassword("reporting", "SOh3TbYhxuLiW8ypJPxmt1oOfL")

三:访问控制安全

3.1:mongodb为每个数据库提供了授权和认证。Mongodb认证,授权用户,是在数据库级别上,Mongodb把用户的凭据放在system.users collection中,认证默认是关闭的,可以通过auth,keyFile配置选项设置。对于Mongodb企业版可以使用kerberos来认证。

在一个数据库上,你只能认证一个用户,如果认证了第二个,第一个就会被放弃。

Mongodb规定授权是以role为基础的。每个授权的用户都保存在system.users中,要给用户分配角色,必须要有一个管理角色的用户在数据库中,如果没有就必须创建一个。

默认的,MongoDB会认为所运行的环境是安全的,没有进行数据库的安全性和身份验证。在这样的配置环境下,唯一要确保的是只有信任的机器才能连接到MongoDB端口。如果使用数据库专用服务器,最简单的方法是让它完全的无法从外部访问,将MongDB服务绑定--bind_ip到指定ip上。更进一步的可以在指定一个端口--port。

如果在一个不信任的环境中使用MongoDB就涉及到如何让MongoDB运行在安全模式上。MongoDB通过--auth和--keyfile参数的使用来启动安全模式用以支持身份验证和简单的粗粒度访问控制。

3.2:使用密钥文件
如果要使用key文件,那么在mongod启动的时候指定keyfile选项。 一般使用openssl生成keyfile文件:

openssl rand -base64 741 -out /var/lib/mongodb/keyfile0
chmod 600 /var/lib/mongodb/keyfile0
特别说明:如果指定keyfile内容的话,MongoDB会跳过keyfile里面的空格。 如:echo "test sets" > /var/lib/mongodb/keyfile0

mongod --keyfile /var/lib/mongodb/keyfile0 --fork

3.3:如何使用管理员认证
采用管理员认证的方式认证,首先要创建一个管理员用户,上节我们讲过如何创建管理员以及如何管理权限和密码。有了管理员用户或者启动用户,即可通过--auth参数来启动MongoDB。

mongod --auth
如果通过配置文件启用管理员认证,只需要把auth的设置改为true即可。

mongod /etc/mongod.conf --fork

四:复制数据文件

如何进行复制
通过复制数据文件即可完成数据库的备份和恢复,这种方式简单明了。


一般经过以下步骤:

1.锁定数据库或关闭数据库。

2.复制数据文件到相应的目录。

3.解锁数据库或重启数据库。


特别说明:如果只需要复制名为test的数据库,则可以复制全部的test.*来完成。

4.1:如何锁定数据库
进行备份时为了防止数据文件发生变化引起问题,可以使用以下命令将数据库锁定:

db.fsyncLock()
这个命令禁止所有写入,并将脏页写入磁盘保证数据不再变化。这个时候的写操作都会在内存中排队等待了,直到数据库解锁。

4.2:复制数据文件
新建一个复制数据文件的目标目录:

mkdir /usr/backup
完成数据文件复制的命令使我们很熟悉的cp命令,必须输入以下命令才能进行到下一节:

cp -R /var/lib/mongodb/* /usr/backup #你需要做备份的目录,确保目录已经存在。
确保备份目录容量够大,漏掉文件可能备份会失效。如果是备份到其他介质,可以直接指定目录。linux下/mnt目录一般是设备目录,外置设备一般在该目录下。

4.3:如何解锁数据库
完成数据文件的复制后,就可以使用以下命令将数据库解锁,恢复数据库的正常运行状态:

db.fsyncUnlock()
调用db.fsyncUnlock()和db.fsyncLock()命令是不要关闭shell,因为如果你启用了身份验证或者断开了链接,可能连不上,需要重新启动mongod,这些命令就都失效了。

4.4:如何恢复数据库
数据库发生问题时需要进行恢复,使用复制的文件进行恢复时可以使用以下命令:

cp -R /usr/backup/* /var/lib/mongodb/
注意:恢复前应该确保mongod没有运行,且/var/lib/mongodb/为空。linux使用rm -rf删除目录。删除前一定确认cp命令成功执行。恢复完成后,再启动mongod。启动mongod使用一下命令:

mongod -f /etc/mongod.conf --fork --nojournal

五:工具方式

5.1:mongodump的基本操作
通过mongodump进行备份可以使用以下选项:
–help 查看帮助信息。
-v [ --verbose ] 显示更多调试信息。
–version 显示该命令版本。
-h [ --host ] arg mongodb数据库所在主机IP地址。
–port arg mongodb启动时所使用的端口。也可以使用 –host:port格式直接指定主机和端口。
–ipv6 是否支持ipv6 。
-u [ --username ] arg 指定登陆用户名。
-p [ --password ] arg 指定登陆密码。
–dbpath arg 越过mongod服务器,直接访问给定路径的mongod数据库文件。使用该参数需要锁定给定的数据目录,所以需要先关闭使用该目录的mongod服务。
–directoryperdb 如果指定了dbpath目录,那么每个db都会保存到一个单独的文件夹中。
–journal enable

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇视图的创建和使用 下一篇HBase1.0以上版本的API改变

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: