Mongo 来自 unix shell 和不同数据库的命令
Mongo command from unix shell with different database
我可以使用此命令连接到 mongo 服务器:
mongo host:port/admin --username=user --password=pass
然后我得到一个 mongo shell,我可以在其中执行任何类型的 mongo 命令
我切换到开发数据库(使用开发)。
我想从 unix shell / 命令行执行 mongo 命令
在开发数据库上,但我只能访问管理员。
我该怎么做?如何指定我想使用的数据库?
如果你只想执行一个命令,你可以这样做:
mongo server:22021/my_dbname --eval "printjson(db.serverStatus())"
如果你想执行多个命令,比如驻留在一个名为 command.js 的文件中,你可以这样做:
mongo server:22021/my_dbname --quiet commands.js
如果你想要纯 shell 脚本 (SQL) 风格,那么你可以这样做:
function testMongoScript {
mongo server:22021/my_dbname <<EOF
use mydb
db.leads.findOne()
db.leads.find().count()
EOF
}
更多详情,您也可以参考here。
您可以使用输出重定向到 运行 您需要的任何命令:
mongo localhost:27017 <<< $'rs.slaveOk()\nshow dbs'
或
echo $'rs.slaveOk()\nshow dbs' | mongo localhost:27017
记住命令之间的 \n
。
使用 --authenticationDatabase
对您的用户所在的数据库进行身份验证,即使您连接到不同的数据库也是如此:
mongo localhost:27017/dev -u user -p **** --authenticationDatabase admin
当然,您将无法在 dev
数据库中执行您的用户无权执行的任何操作。
我可以使用此命令连接到 mongo 服务器:
mongo host:port/admin --username=user --password=pass
然后我得到一个 mongo shell,我可以在其中执行任何类型的 mongo 命令 我切换到开发数据库(使用开发)。
我想从 unix shell / 命令行执行 mongo 命令 在开发数据库上,但我只能访问管理员。
我该怎么做?如何指定我想使用的数据库?
如果你只想执行一个命令,你可以这样做:
mongo server:22021/my_dbname --eval "printjson(db.serverStatus())"
如果你想执行多个命令,比如驻留在一个名为 command.js 的文件中,你可以这样做:
mongo server:22021/my_dbname --quiet commands.js
如果你想要纯 shell 脚本 (SQL) 风格,那么你可以这样做:
function testMongoScript {
mongo server:22021/my_dbname <<EOF
use mydb
db.leads.findOne()
db.leads.find().count()
EOF
}
更多详情,您也可以参考here。
您可以使用输出重定向到 运行 您需要的任何命令:
mongo localhost:27017 <<< $'rs.slaveOk()\nshow dbs'
或
echo $'rs.slaveOk()\nshow dbs' | mongo localhost:27017
记住命令之间的 \n
。
使用 --authenticationDatabase
对您的用户所在的数据库进行身份验证,即使您连接到不同的数据库也是如此:
mongo localhost:27017/dev -u user -p **** --authenticationDatabase admin
当然,您将无法在 dev
数据库中执行您的用户无权执行的任何操作。