我正在运行mongodb实例,它在我的服务器机器上运行auth模式。目前我使用shell scipt来判断是否有mongodb实例正在运行。如何检查mongodb是在auth模式还是非auth模式下运行。
答案 0 :(得分:7)
如果您只想测试是否可以通过bash
进行身份验证而无法连接到MongoDB服务器,则可以使用类似于以下内容的脚本:
#!/bin/bash
# Connect to MongoDB address (host:port/dbname) specified as first parameter
# If no address specified, `mongo` default will be localhost:27017/test
isAuth=`mongo --eval "db.getUsers()" $1 | grep "not auth"`
if [ -z "$isAuth" ] ;
then
echo "mongod auth is NOT enabled"
exit 1
else
echo "mongod auth is ENABLED"
exit 0
fi
示例输出:
$ ./isAuthEnabled.sh localhost:27017
mongod auth is ENABLED
$ ./isAuthEnabled.sh localhost:27777
mongod auth is NOT enabled
此脚本的唯一参数是要连接的可选MongoDB地址(host:port / dbname); mongo
shell默认使用localhost:27017/test
。
该脚本可以简单地检查是否可以未经许可列出用户。
如果正确启用了auth,db.getUsers()
命令应返回如下错误:
"Error: not authorized on test to execute command { usersInfo: 1.0 }"
默认情况下(与MongoDB 3.0一样),localhost exception
允许您通过localhost
连接为部署创建第一个user administrator。一旦添加了至少一个用户,就会自动禁用localhost异常。
如果您想检查部署的完整安全性,那么绝对值得查看MongoDB Security checklist。