一. 前言
最近公司加强安全,http://www.ttlsa.com/mongodb数据要启用验证,顺道总结下了。默认情况下,mongodb不启用验证的。数据库级别的权限,要么可读写要么只读权限。mongod的验证配置比较操蛋。分两种情形:一种是单服务器,只需启动时添加--auth参数即可。 另一种是复制集、分片集群服务器,必须指定keyfile参数,其他节点之间的通讯基于该keyfile。在这种情况下,–auth参数是隐含启用的,所有的mongodb访问都必须验证的。二. 单服务器模式
添加管理员用户,admin库下的用户是全局用户,对所有的数据库可读写。
1
2
3
4
./mongo
use admin
db.addUser(“root”,“www.ttlsa.com”)
db.auth(“root”,“www.ttlsa.com”)
创建普通的用户,是数据库级别的。
1
2
3
use database_name
db.addUser(‘guest’,‘www.ttlsa.com’) 可读写
db.addUser(‘guest’,‘www.ttlsa.com’,true) 只可读
查看用户
1
db.system.users.find()
删除用户
1
2
3
db.removeUser(username)
或
db.system.users.remove( { user: username } )
配置文件加上下面的参数后重新启动mongod实例
1
auth = ture
三. 复制集与分片集群模式下
3.1 keyfile规则
- 集群服务器之间通讯通过keyfile进行身份验证。
- 每个实例的keyfile文件内容要一致。
- keyfile文件权限仅当前用户可读。
- 集群成员都需要指定–keyFile参数。
- 每个客户端连接到数据库之前必须验证。
- key长度必须在6到1024个字符之间,否则会报错,mongod起不起来。
- 任何空格被忽略。
- key不能包含非法字符=,否则会报错,mongod起不起来。3.2 创建一个keyfile
1
openssl rand -base64 513 > keyfile
最好是3的倍数,否则会含有非法字符=。3.3 修改keyfile权限
1
2
chown mongod.mongod keyfile
chmod 600 keyfile
3.4 创建一个管理账号
在启用–keyFIle后,连接数据库都必须要验证的。
1
2
3
use admin
db.addUser(“root”,“www.ttlsa.com”)
db.auth(“root”,“www.ttlsa.com”)
3.5 启用–keyFile
修改mongod.conf文件,添加下面这项
1
keyFile = /path/to/keyfile
3.6 重新启动mongod
1
./mongod --config mongod.conf
创建普通用户与单机模式下验证一样的。如需转载请注明出处:http://www.ttlsa.com/html/2707.html