Исходные данные:
- Ubuntu Server 12.04 LTS;
- MongoDB 2.2.3, запущенная как сервис;
- python-скрипт, использующий pymongo, которым надо «достучаться» до удаленного mongo-сервера.
Вы уже установили MongoDB? Отлично! Если нет, рекомендую проследовать к вот этот инструкции.
Для начала необходимо проверить, где находится 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 изменения:
- Раскомментируем строку auth = true, которая включает авторизацию по умолчанию;
- Закомментируем строку bind_ip = 127.0.0.1, чтобы соединяться можно было с любого хоста.
Готово! Теперь осталось перезагрузить 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')}
Надеюсь это короткое руководство позволит вам сэкономить время и нервы.
ссылка на оригинал статьи http://habrahabr.ru/post/170741/
Добавить комментарий