- PVSM.RU - https://www.pvsm.ru -
Ситуация, когда приложение и сервер баз данных находятся на одной и той же машине — очень редкая. Но по умолчанию в MongoDB авторизация отключена и вы не сможете соединить из вне. Мне не удалось найти краткую и понятную инструкцию, как это можно быстро исправить. Что и стало поводом для этого поста.
Исходные данные:
Вы уже установили MongoDB? Отлично! Если нет, рекомендую проследовать к вот этот [2] инструкции.
Для начала необходимо проверить, где находится config-файл для mongod, который сейчас запущен. Запускаем терминал и проверяем:
user@ubuntu:/$ ps -ef | grep mongo
mongodb 65042 1 0 Feb25 ? 00:07:11 /usr/bin/mongod --config /etc/mongodb.conf
user 65343 64749 0 02:40 pts/0 00:00:00 grep --color=auto mongo
Как видно, в моем случаи он находится в /etc/mongodb.conf. Если запустить:
user@ubuntu:/$ netstat -a
Можно заметить, что mongod готов принять соединения только от localhost:
tcp 0 0 localhost:27017 *:* LISTEN
Пора отредактировать config-файл в соответствии с нашими требованиями. Открываем его и делаем ровно 2 изменения:
Готово! Теперь осталось перезагрузить mongod:
user@ubuntu:/$ sudo service mongodb stop
mongodb stop/waiting
user@ubuntu:/$ sudo service mongodb start
mongodb start/running, process 65404
Осталось добавить пользователя в БД:
user@ubuntu:/$ mongo
MongoDB shell version: 2.2.3
connecting to: test
> use mytest
switched to db mytest
> db.testcollection.insert({"message":"Hello, remote user!"})
> db.addUser('myuser', 'superpassword')
{ "n" : 0, "connectionId" : 2, "err" : null, "ok" : 1 }
{
"user" : "myuser",
"readOnly" : false,
"pwd" : "ecb2c08916b34e477c33c10cec2ae416",
"_id" : ObjectId("512c6d9dcc5d103a896944ae")
}
> db.testcollection.find()
{ "_id" : ObjectId("512c6d85cc5d103a896944ad"), "message" : "Hello, remote user!" }
Перейдем к другому компьютеру в данной сети для чистоты эксперимента. В вашем случаи, конечно, ip и порт могут отличаться. Выполним там следующий python-скрипт:
from pymongo import MongoClient
mongoserver_uri = "mongodb://myuser:superpassword@10.2.0.182:27017/mytest"
conection = MongoClient(host=mongoserver_uri)
db = conection['mytest']
collection = db['testcollection']
print collection.find_one()
После запуска скрипта получаем результат:
{u'message': u'Hello, remote user!', u'_id': ObjectId('512c6d85cc5d103a896944ad')}
Надеюсь это короткое руководство позволит вам сэкономить время и нервы.
Автор: xSkyFoXx
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/28093
Ссылки в тексте:
[1] pymongo: http://api.mongodb.org/python/current/
[2] вот этот: http://docs.mongodb.org/manual/installation/
[3] Источник: http://habrahabr.ru/post/170741/
Нажмите здесь для печати.