создание нескольких баз данных monogdb с использованием сценария оболочки - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь создать несколько баз данных mongodb, используя следующий скрипт оболочки.где root имеет root-доступ на уровне экземпляра mongodb.db_names.txt передает имена созданных БД.

cat dbcreate.sh          
for DB in 'cat /home/db_names.txt'       
do       
echo "use $DB" | mongo   -u root  -p root  --port 27017   
echo "db.createCollection(\"testcollection\");" | mongo   -u root -p root123 --port 27017 
done

Но происходит сбой из-за следующей ошибки: Я не могу понять, почему root не может создать коллекцию в пользовательской базе данных?кто-нибудь может помочь?

MongoDB shell version v4.0.12
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("4e714db0-9faf-497c-ae4e-bbf913979bbd") }
MongoDB server version: 4.0.12
switched to db db1
bye
exception: connect failed
MongoDB shell version v4.0.12
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("ed678cc0-9f8b-4935-859b-b02e039c8d47") }
MongoDB server version: 4.0.12
switched to db db2
bye

С уважением, Var

1 Ответ

0 голосов
/ 27 сентября 2019

Приведенный выше скрипт запускает два клиента оболочки Mongo, каждый из которых работает по команде Mongo:

1) use $ DB
2) db.createCollection (\ "testcollection \")

Возможно, вы захотите отправить обе команды в одну и ту же оболочку Mongo, чтобы db.createCollection выполнялась в правильной базе данных, предоставленной с помощью:

do
    ( echo "use $DB" | echo "db.createCollection(\"testcollection\");" ) |
        mongo -u root  -p root --port 27017   
done

или аналогично.

...