如何在启用auth的情况下从命令行创建新的MongoDB?

时间:2012-07-01 03:26:15

标签: mongodb capistrano

为了在Capistrano任务中创建MongoDB数据库,我需要弄清楚当MongoDB在auth启动的情况下运行时如何通过MongoDB shell创建一个新数据库。

启用auth后,如果没有首先进行身份验证,MongoDB shell就无法执行任何操作,但据我所知,在使用 admin 数据库时必须进行身份验证。所以我一直在为它的初学者连接它,如:

sudo -u mongodb mongo admin --eval "db.auth(username, password)"

这证明了我的进一步行动,但是......那时我需要在同一个shell会话中创建数据库和用户。但我不能:

sudo -u mongodb mongo admin --eval "db.auth(username, password);use new_database"

因为use database无法在eval中使用。所以我试过了:

sudo -u mongodb mongo admin --eval "db.auth(username, password);db = connect('localhost:27017/new_database')"

这实际上会让我得到一个我想创建的新数据库的实例,但如果我尝试:

sudo -u mongodb mongo admin --eval "db.auth(username, password);connect('localhost:27017/new_database').addUser(new_user, new_password)"

我收到了身份验证错误,因此显然使用connect()命令忘记我之前已经过身份验证。

所以这就是我被困住的地方,尝试使用auth和管理员用户在MongoDB的一行中创建一个数据库。

关于我如何做到这一点的任何建议?

2 个答案:

答案 0 :(得分:15)

您可以使用db.getSiblingDB(name)来引用新数据库并添加新帐户,例如:

mongo -u username -p password admin --eval "db.getSiblingDB('new_database').addUser('new_user', 'new_password');"

现在,您应该能够使用-u和-p:

从命令行进行身份验证
mongo -u new_user -p new_password new_database

答案 1 :(得分:4)

请注意,从版本2.6开始,public class MainActivity extends AppCompatActivity implements View.OnTouchListener { private RelativeLayout mRelLay; private float mInitialX, mInitialY; private int mInitialLeft, mInitialTop; private View mMovingView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRelLay = (RelativeLayout) findViewById(R.id.relativeLayout); for (int i = 0; i < mRelLay.getChildCount(); i++) mRelLay.getChildAt(i).setOnTouchListener(this); } @Override public boolean onTouch(View view, MotionEvent motionEvent) { RelativeLayout.LayoutParams mLayoutParams; switch (motionEvent.getAction()) { case MotionEvent.ACTION_DOWN: mMovingView = view; mLayoutParams = (RelativeLayout.LayoutParams) mMovingView.getLayoutParams(); mInitialX = motionEvent.getRawX(); mInitialY = motionEvent.getRawY(); mInitialLeft = mLayoutParams.leftMargin; mInitialTop = mLayoutParams.topMargin; break; case MotionEvent.ACTION_MOVE: if (mMovingView != null) { mLayoutParams = (RelativeLayout.LayoutParams) mMovingView.getLayoutParams(); mLayoutParams.leftMargin = (int) (mInitialLeft + motionEvent.getRawX() - mInitialX); mLayoutParams.topMargin = (int) (mInitialTop + motionEvent.getRawY() - mInitialY); mMovingView.setLayoutParams(mLayoutParams); } break; case MotionEvent.ACTION_UP: mMovingView = null; break; } return true; } } 函数已被弃用。

使用addUserdb.createUser()代替db.updateUser()将用户添加到MongoDB。

您的代码应如下所示:

db.addUser()