Bash 用于mongo DB身份验证的Shell脚本

Bash 用于mongo DB身份验证的Shell脚本,bash,mongodb,shell,ubuntu-14.04,Bash,Mongodb,Shell,Ubuntu 14.04,我不熟悉shell脚本。下面是我为启用mongoDB身份验证和在mongoDB中创建用户而编写的脚本。当我在脚本执行后尝试连接到DB时,mongo shell上的连接和命令执行会在没有身份验证的情况下发生,在admin DB中,我可以看到所有用户都被正确添加。尝试终止进程并以--auth选项开始,但没有成功。我在Ububtu 14.0 LTS上执行此操作。请建议我正确的方法使这个脚本工作 #!/bin/bash sudo apt-key adv --keyserver hkp://keyserv

我不熟悉shell脚本。下面是我为启用mongoDB身份验证和在mongoDB中创建用户而编写的脚本。当我在脚本执行后尝试连接到DB时,mongo shell上的连接和命令执行会在没有身份验证的情况下发生,在admin DB中,我可以看到所有用户都被正确添加。尝试终止进程并以--auth选项开始,但没有成功。我在Ububtu 14.0 LTS上执行此操作。请建议我正确的方法使这个脚本工作

#!/bin/bash
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo deb http://repo.mongodb.org/apt/ubuntu $(lsb_release -sc)/mongodb-org/3.0 multiverse | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
sudo apt-get -y update
sudo apt-get install -y mongodb-org
cd /
sudo mkdir data
cd data
sudo mkdir db
echo "db.createUser( { user:'admin' , pwd:'password',roles: [ { role: '__system', db: 'admin' } ]})" | sudo mongo admin
echo "db.auth('admin','password')" | sudo mongo admin
sudo sh -c 'echo "security  \n  authorization : enabled" >> /etc/mongod.conf'
sudo service  mongod  restart
echo "db.createUser( { user: 'userA', pwd: 'passwordA',roles: [ { role:      'dbOwner', db: 'ManagementStore' } ]})" | sudo mongo admin  -u 'admin' -p 'password'
echo "db.createUser( { user: 'userB', pwd: 'passwordB',roles: [ { role: 'dbOwner', db: 'UserStore' } ]})" |  sudo mongo admin -u 'admin' -p 'password'
根据:您还可以使用--eval标志对命令求值,如果它只是一个命令

mongo --eval 
     "db.createUser( { user:'admin' , pwd:'password'... } ]})"
并检查评论那里有很多好东西太多。
玩得开心

我只注意到一件事。不确定这是否能解决问题,但是, 启用身份验证时:

sudo sh -c 'echo "security  \n  authorization : enabled" >> /etc/mongod.conf'
你好像漏掉了一个冒号

sudo sh -c 'echo "security:\n  authorization : enabled" >> /etc/mongod.conf'
至于createUser。我尝试了@profesor79的解决方案:

mongo --eval 'db.createUser({user: "<username>", pwd: "<password>", roles:[{ role: "root", db: "admin"}]})'
mongo--eval'db.createUser({user:,pwd:,roles:[{role:“root”,db:“admin”}]})

您在哪里启动mongod进程?安装后,它会自动启动。正如我在shell上看到的,当您执行“echo”db.createUser({user:'admin')时,进程开始侦听端口27017。。。"您是否在控制台中获得任何输出?只是想知道在您回显命令时是否启动了mongo?您是对的,我在立即执行命令时收到连接拒绝错误。因此,安装后,我在执行任何命令之前应用了5分钟的睡眠时间。忘记在发布的脚本代码中添加该时间。即使在重新启动后,我他们使用了相同的睡眠时间。