我已经建立了一个MongoDB数据库,其admin
用户只具有管理权限,而不具有对数据库的读写权限.
我现在想做的是:
并且:我需要从命令行执行此操作.所以我尝试过:
$ mongo admin -u admin -p admin --eval "db.addUser('dummyuser', 'dummysecret')"
Run Code Online (Sandbox Code Playgroud)
(请注意,由于我仍在运行MongoDB 2.0,我使用的是旧格式db.addUser
.)
如果我还能告诉它该用户应该使用哪个数据库,这将是非常有意义的.但现在我在挣扎.如何为此命令指定数据库?如果我在交互式shell中,我可以运行
> use dummydb
Run Code Online (Sandbox Code Playgroud)
但是如何从命令行执行此操作?我的第一次尝试是将两个命令连接起来;
,但这不起作用:
$ mongo admin -u admin -p admin --eval "use dummydb;db.addUser('dummyuser', 'dummysecret')"
Run Code Online (Sandbox Code Playgroud)
只是给我语法错误.
我怎么做到这一点?
Ste*_*nie 22
该use db
语法仅在交互式shell会话支持.
如果要从管理脚本更改数据库,可以使用db.getSiblingDB('dbname')
.
所以你使用的等效命令行将--eval
是:
# MongoDB 2.6+: use createUser()
$ mongo admin -u admin -p admin --eval "db.getSiblingDB('dummydb').createUser({user: 'dummyuser', pwd: 'dummysecret', roles: ['readWrite']})"
# MongoDB 2.4: use addUser()
$ mongo admin -u admin -p admin --eval "db.getSiblingDB('dummydb').addUser('dummyuser', 'dummysecret')"
Run Code Online (Sandbox Code Playgroud)
MongoDB手册中有一节介绍了交互式和脚本式之间的差异mongo
.这包括其他交互式shell帮助程序的等价物,例如show dbs
和show collections
.
通过放置命令解决它
use dummydb
db.addUser('dummyuser', 'dummysecret')
Run Code Online (Sandbox Code Playgroud)
到一个.js
文件,然后通过调用运行MongoDB:
$ mongo admin -u admin -p admin < setupMongoDB.js
Run Code Online (Sandbox Code Playgroud)
而已 :-)
归档时间: |
|
查看次数: |
21456 次 |
最近记录: |