我正在运行一个 mongodb 实例,它在我的服务器机器上运行身份验证模式。目前我正在使用 shell scipt 来获取是否有 mongodb 实例正在运行。如何检查 mongodb 是在 auth mode 还是 non auth mode 下运行。
问问题
6917 次
1 回答
11
如果你只是想测试是否可以通过 认证连接到 MongoDB 服务器bash
,你可以使用类似下面的脚本:
#!/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
.
该脚本对是否可以在未经许可的情况下列出用户进行简单检查。
如果正确启用了身份验证,该db.getUsers()
命令应返回如下错误:
"Error: not authorized on test to execute command { usersInfo: 1.0 }"
注意:本地主机异常
默认情况下(如 MongoDB 3.0),有一个localhost exception
允许您通过连接为部署创建第一个用户管理员localhost
。一旦添加了至少一个用户,localhost 异常就会自动禁用。
如果您想检查部署的完整安全性,绝对值得查看MongoDB Security checklist。
于 2015-08-17T03:44:44.623 回答