为了在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的一行中创建一个数据库。
关于我如何做到这一点的任何建议?
答案 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;
}
}
函数已被弃用。
使用addUser
和db.createUser()
代替db.updateUser()
将用户添加到MongoDB。
您的代码应如下所示:
db.addUser()