zEvilz
всем привет. #вопрос
стоит монго v4.2.1, пока только разбираюсь
в конфиге добавил
security:
authorization: "enabled"
создал рута с ролью root и админа с ролью userAdminAnyDatabase, перезапустил сервис
если приконнектиться без указания юзера и выполнять команды, но никаких ошибок с доступом не показывает, пароли тоже не запрашивает. где косяк?
zEvilz
show dbs ничего не выдает, переключение по базам работает
show collections выдает
Warning: unable to run listCollections, attempting to approximate collection names by parsing connectionStatus
как я понял, без указания юзера доступ ограниченный, но и ошибок нет, что не авторизован
yopp
Да, аутентификация производится отдельной командой, после чего текущее соединение будет помечено как аутентифицированное
yopp
Команды вы отправить можете, но без аутентификации в ответ будут ошибки
zEvilz
Команды вы отправить можете, но без аутентификации в ответ будут ошибки
понял, спасибо. а то тут в статье вижу, что на любую команду должна выдаваться ошибка типа
listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13,
"codeName" : "Unauthorized"
yopp
Проверить текущий статус соединения можно через https://docs.mongodb.com/manual/reference/command/connectionStatus/
Там будет authInfo
yopp
yopp
Возможно там некорректно ошибки обрабатываются
yopp
Попробуйте db.foo.find({}) сделать, например
zEvilz
yopp
zEvilz
понял
zEvilz
еще вопрос. какие параметры монго стоит мониторить кроме доступности сервиса?
Yuriy
Привет, может кто знает как подключиться к монго через ssh tunnel из nodejs?
yopp
yopp
Если не tls, то как обычный тонель
yopp
С tls можно попробовать tcp прокси посредине поставить, чтоб tls терминировать. Но это очень плохая идея
Yuriy
открыть туннель и потом подключиться к открытому порту?
yopp
Возможно конечно как-то с dns локально накрутить
yopp
Я бы вам рекомендовал отказаться от тоннелей и поднять нормальный vpn
yopp
Это крайне неподходящий способ подключения
Yuriy
это подходит наибольше работа с базой идет локально но есть один сервис которий должен стучать к базе удалёно
yopp
Вы хотите vpn
yopp
В отличии от тоннеля это полноценный инструмент, который в том числе можно настроить на автоматическую установку соединения при запросе определённого адреса/днс имени
Anonymous
{managed_groups: undefined} - найдет все записи, где нет этого поля. А как найти записи, где оно есть?? Извините за глупый вопрос))))
Bohdan
$ne null
Bohdan
hotya
Bohdan
это массив же?
Anonymous
да
Bohdan
{ $exists: true, $not: {$size: 0} } })
Joseph
А насколько плохо делать populate от пустого массива ???
Nick
Nick
да
Joseph
да
Я просто побоялся славить какой нибудь сайд эфект
Joseph
но вроде бы все нормально
Anonymous
я не понимаю, как получить id, потому что через JSON не получается(я изпользую Mongodb driver и node js)
[ { _id: 5dcda831554c7a2dd446a534, id: 'test' },
{ _id: 5dcda843554c7a2dd446a535, id: 'test2' }
Nick
Aʟᴇx
Anonymous
Id
Anonymous
JSON.parce
Nick
JSON.parce
киньте кусок кода где запрос делаете
Anonymous
https://pastebin.com/7sXQXXh1
Anonymous
Как заставить бд выдавать ответ в нормальном JSON на node js driver
Anonymous
Nick
и по хорошему пройдите какойнить туториал
Nick
какойнить такой, первый попавшийся в гугле https://flaviocopes.com/node-mongodb/
начиная с Find all documents
Nick
вы получите документ из базы, а уже у него вытиащите нужное вам поле
Nick
docs.id
Nick
док уже json объект
Anonymous
docs.id
Я так пробывал сразу, но это не JSON
Nick
collection.find('id') сейчас эта строка в коде?
Anonymous
Anonymous
Nick
сделайте просто collection.find()
Anonymous
Такой же ответ
Anonymous
Nick
там получается массив доков
Nick
так что нужно по нему проитерироваться
Nick
хз кстати отработает [0] или придется через форич обходить
Anonymous
Anonymous
Nick
разбирайтесь с js, из базы вы получаете массив и придется с этим жить
Anonymous
Я массив получаю не нормальный
Nick
вроде как была возможность только один док вытащить, но это уже вам в доки драйвера, тут уже не подскажу
Nick
там курсор
Alexander
Спасибо за митап. За возможность пообщаться с коллегами, за возможность прикоснуться к вендору. И за пиццу ))
Андрей
Добрый день, посоветуйте пожалуйста gui клиент под Windows для mongodb. Нужно подключиться к базе данных которая в контейнере докера крутится, структуру изучить
Bohdan
zEvilz
всем привет. создал юзера для мониторинга
db.createUser(
... {
... user: "monit",
... pwd: "123456",
... roles: [{role: "clusterMonitor", db: "admin"}]
... }
... )
но не могу получить статистику mongostat
Failed: (Unauthorized) not authorized on admin to execute command { serverStatus: 1, recordStats: 0, lsid: { id: UUID("e720e8b6-eb12-4a1e-9854-a657c9296278") }, $db: "admin" }
авторизоваться под ним в монго тоже не могу
2019-11-15T08:07:43.023+0000 E QUERY [js] Error: Authentication failed. :
connect@src/mongo/shell/mongo.js:341:17
@(connect):2:6
2019-11-15T08:07:43.024+0000 F - [main] exception: connect failed
2019-11-15T08:07:43.024+0000 E - [main] exiting with code 1
в чем ошибка?
Bohdan
читай что тебе пишет монга, первый твой вопрос - чтобы статус посмотреть админ юзер нужен
Bohdan
надо еще выяснить что юзер с такой ролью ваще может делать
zEvilz
прочитал, что юзер с ролью clusterMonitor может юзать mongostat. юзером с ролью root могу смотреть, а с этим нет
Ренат
Добрый день. Необходимо в интернет-магазин добавить отображение ранее просмотренных товаров. Есть два варината:
1. Создаем отдельную коллекцию с полями
id - идентификатор посетителя
products - массив из продуктов, которые посещали (id продукта, название и прочие базовые детали)
2. В существующей коллекции продуктов создаем поле, хранящее массив, например visited, и записываем в него айди посетителей.
Какой вариант лучше? Или возможно есть третий вариант?