0

Я настроил Монго работать на GCE инстанции.Запуск MongoDB при запуске в экземпляре Google Compute Engine

Сначала я работал в / и запуск Монго с sudo mongod, но разумно печатает некоторое предупреждение о том, что:

ВНИМАНИЕ: Вы работаете в этот процесс как пользователь корня, , не рекомендуется.

Так что я переехал все, чтобы /home/my_google_account, и я могу просто получить через SSH и запустить mongod.

Теперь я хотел бы иметь некоторые действия, в том числе mongod, запускать при запуске. В моем понимании, правильный способ сделать это состоит в использовании Google startup scripts: с консоли вы можете предоставить сценарий, как следующее в качестве метаданных ключ-значение пары:

#! /bin/bash 
apt-get update 
mongod -f /home/my_google_account/mongod.conf 

Он работает, но, как говорит Google это выполняется как корень:

экземпляр всегда выполняют сценарии запуска с правами администратора, и только выполняет эти сценарии после того, как он создает какие-либо новые пользователь, чьи SSH ключей включены в метаданных экземпляра.

Таким образом, процесс mongod запускается с привилегиями суперпользователя, и я все еще получаю предупреждение, что я должен был первоначально:

ВНИМАНИЕ: Вы работаете в этот процесс как пользователь корня, , не рекомендуется.

Что я должен делать?

Есть ли способ для запуска сценария не бежать как корень? Или я должен просто работать в / с sudo с и игнорировать предупреждение на всех? Все, кажется, предполагает, что вы должны работать в домашней папке пользователя, получить необходимые разрешения и запускать mongod с привилегиями. Но тогда стартовый скрипт будет работать как root!

ответ

0

попробовать это - добавить пользователь к персистирующему диску -

useradd -ms /bin/bash mongouser 
#replace /data/db with your data location 
chown -R mongouser /data/db 

добавить это к вашему Starup сценарию

apt-get update 
sudo mongouser -c 'mongod -f /home/my_google_account/mongod.conf' 
+0

Спасибо за ваш ответ. Надеюсь, вы можете разобраться в этом. Я заметил, что на самом деле мой Монго сборки (из percona.com) уже создан 'пользователь mongod' в' mongod' группы. Для чего это? Я должен использовать этот (например, 'sudo mongod -c 'mongod -f mongod.conf')? – natario

+0

скорее всего это для работает монго. Если вы используете нестандартную сборку пакетов, я бы предположил, что ваша сборка может также «chown» mongo data dir пользователю «mongod» для вас. Проверьте и посмотрите, какой пользователь/группа владеет файлом/data/db (или запустите mongo как root, как вы уже это сделали, и ps -eaf | grep mongo, чтобы узнать, где находится каталог данных mongo с конфигурацией --dbpath или посмотреть/home /my_google_account/mongod.conf для местоположения).Вы можете использовать mongod или любого пользователя, если владеет данными dir ... И, пожалуйста, отметьте ответ как правильный ;-) – steveinatorx