Google
journalctl -n 50 -u mongodb
Google
No entries
Google
КАК ИСПРАВИТЬ ?
Oleg
надо логи почитать.
Oleg
для этого нужно посмотреть куда логирруется
Google
где логи ?
Google
покажу
Oleg
в конфиге есть опции типа systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log
Google
## content systemLog: destination: file logAppend: true path: /www/server/mongodb/log/config.log # Where and how to store data. storage: dbPath: /www/server/mongodb/data directoryPerDB: true journal: enabled: true # how the process runs processManagement: fork: true pidFilePath: /www/server/mongodb/log/configsvr.pid # network interfaces net: port: 27017 bindIp: 127.0.0.1 #operationProfiling: #replication: # replSetName: bt_main security: authorization: disabled javascriptEnabled: false #sharding: # clusterRole: shardsvr
Google
Oleg
Всем привет как можно исправить и запустить Mongodb на VPS Centos 8
ну и читай его. /www/server/mongodb/log/config.log что происходило при поптыке рестартануть можешь подчистить и попробовать рестартануть его еще раз
Google
Вот лог
Google
Google
Google
вот после старт
Oleg
"msg": "This version of MongoDB is too recent to start up on the existing data files. Try MongoDB 4.2 or earlier."
Oleg
что за история этого экземпляра? очень странно что в центос-8 используется инит-скрипт
Google
это панел
Google
было MongoDB 4.2 после Update MongoDB 4.4.6 не запускается
Oleg
ошибка говорит что файлы в каталоге с данными от более новой версии
Oleg
ну... значит надо поднять до 4.4
Google
как обновить ?
Oleg
вообще yum update / yum install но у вас тут какая-то индивидуальщина
Oleg
в /etc/yum.repos.d/ в каком-то из файликов подправить версию https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/$basearch/ или самостоятельно скачать пакеты одинаковой версии https://repo.mongodb.org/yum/redhat/8/mongodb-org/4.4/x86_64/RPMS/ и обновить, можно даже юмом.
Oleg
я вообще очень рекомендую сбекапить имеющиеся бинари, конфиги и самое главное данные /www/server/mongodb/data на всякий случай
Max
Добрый день, имеется сервер с установленным на нем mongodb и mongodb compass, возможно ли настроить удалённое управление через Web интерфейс?
Рик
Всем здрасте, вопрос по поводу mongorestore Если указать папку восстановливает не все коллекции А если отдельно то норм, в чем проблема?
Mikhail
Всем привет. подскажите с ролями, не могу сделать updateUser. Пишет Updating user failed: not authorized on qwe to execute command 1. Создал БД "qwe" 2. Создал в ней пользователя "cs" 3. Дал этому пользователю роль dbOwner { "_id" : "qwe.cs", "user" : "cs", "db" : "qwe", "roles" : [ { "role" : "dbOwner", "db" : "qwe" } ] } Создавать, удалять пользователей могу. Но при попытке db.updateUser("user2", {roles: ["readWrite"]}) Error: Updating user failed: not authorized on qwe to execute command { updateUser: "user2", roles: [ "readWrite" ], writeConcern: { w: "majority", wtimeout: 600000.0 }, lsid: { id: UUID("253fb888-cc36-4d91-ba65-dc088bcb5c9b") }, $db: "qwe"
Mikhail
что я делаю не так?
yopp
в монге аутентификация сделана крайней неинтуитивно, так как скоупы аутентификации зависят от выбранного источника аутентификации
yopp
а не от конфигурации прав
yopp
Т.е. создавая пользователя в базе qwe, вы создаёте его в отдельном аутентификационном и авторизационном хранилище, которое явно нужно указать как authSource/authDB
yopp
при этом источник по-умолчанию зависит от uri
yopp
если вы явно не указываете в uri базу, то тогда это будет admin, а если указываете, то та база, которую указали
Mikhail
$ mongo -u cs -p --authenticationDatabase qwe MongoDB shell version v4.0.21 Enter password: connecting to: mongodb://127.0.0.1:27017/?authSource=qwe&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("9e37c41e-a398-4604-b3d0-3c7bfe6bb4b4") } MongoDB server version: 4.0.25 > use qwe switched to db qwe > db.updateUser("user1", {roles: ["readWrite"]}) 2021-08-18T16:41:30.326+0300 E QUERY [js] Error: Updating user failed: not authorized on qwe to execute command { updateUser: "user1", roles: [ "readWrite" ], writeConcern: { w: "majority", wtimeout: 600000.0 }, lsid: { id: UUID("9e37c41e-a398-4604-b3d0-3c7bfe6bb4b4") }, $db: "qwe" }
Mikhail
у меня задача сделать пользователя-администратора на некоторые БД, что б он мог в этих БД create\delete\update пользователей
Mikhail
если я сделаю такого администратора с правами редактирования пользователей в namespace admin то это получиться полноценный админ всей монги
yopp
нет
yopp
это распространнёное заблуждение
yopp
скоуп права определяется не authSource, а указанным в самом праве скоупом
yopp
в вашем случае вы явно указали что роль dbOwner ограничена базой qwe
yopp
по поводу использования updateUser: там есть ряд нюансов, так как нет действия userUpdate
yopp
https://docs.mongodb.com/v4.0/reference/command/updateUser/#required-access
yopp
https://docs.mongodb.com/v4.0/reference/privilege-actions/
Mikhail
если я сделаю такого пользователя "user" : "cs", "db" : "admin", "roles" : [ { "role" : "dbOwner", "db" : "qwe" } ] я все равно не смогу апдейтить пользователей в qwe
Mikhail
я сегодня целый день читал эту документацию, понимания не пришло
Mikhail
я так понимаю для update нужна привилегия changeCustomData которая входит в роль dbOwner, но у меня не работает, если я завожу пользователя-админа с такой ролью вне зависимости от БД
Mikhail
$ mongo -u cs -p --authenticationDatabase admin MongoDB shell version v4.0.21 Enter password: connecting to: mongodb://127.0.0.1:27017/?authSource=admin&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("14f90b02-560e-4140-94e0-3d8072f64a7b") } MongoDB server version: 4.0.25 > show dbs qwe 0.000GB > use qwe switched to db qwe > db.updateUser("user2", {roles: ["readWrite"]}) 2021-08-18T16:56:16.571+0300 E QUERY [js] Error: Updating user failed: not authorized on qwe to execute command { updateUser: "user2", roles: [ "readWrite" ], writeConcern: { w: "majority", wtimeout: 600000.0 }, lsid: { id: UUID("14f90b02-560e-4140-94e0-3d8072f64a7b") }, $db: "qwe" }
Mikhail
это с таким пользователем "user" : "cs", "db" : "admin", "roles" : [ { "role" : "dbOwner", "db" : "qwe" } ],
Mikhail
или я опять что-то не так понял?
yopp
а db.getUsers() что-то отображает?
Mikhail
в БД qwe ?
Mikhail
два пользователя "user" : "cs", "db" : "qwe", "roles" : [ { "role" : "dbOwner", "db" : "qwe" } ], "mechanisms" : [ "SCRAM-SHA-1", "SCRAM-SHA-256" ] }, { "_id" : "qwe.user1", "userId" : UUID("aebf9647-dd01-433a-8906-615b9e4b0995"), "user" : "user1", "db" : "qwe", "roles" : [ { "role" : "read", "db" : "qwe" }
Mikhail
пользователя cs у меня получается два, один в qwe второй в admin
yopp
так, кажется я полнял вашу задачу
yopp
mongo use admin db.createUser({ user: "root", pwd: "sikret", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ] }) db.adminCommand( { shutdown: 1 } ) # stop mongo; enable auth; start mongo mongo -u root -p sikret --authenticationDatabase=admin use admin db.createUser({ user: "qwe-admin", pwd: "qwe", roles: [ { role: "dbOwner", db: "qwe" }] }) db.createUser({ user: "asd-admin", pwd: "asd", roles: [ { role: "dbOwner", db: "asd" }] }) mongo qwe -u qwe-admin -p qwe --authenticationDatabase=admin use qwe db.createUser({ user: "qwe-user", pwd: "qwe-user", roles: [ { role: "read", db: "qwe" } ] }) db.grantRolesToUser("qwe-user", [{role: "readWrite", db: "qwe"}]) db.revokeRolesFromUser("qwe-user", ["read"]) use asd db.createUser({ user: "qwe-user", pwd: "qwe-user", roles: [ { role: "read", db: "qwe" } ] }) # fail mongo qwe -u qwe-user -p qwe-user --authenticationDatabase=qwe use qwe db.data.insertOne({hello: "world"}) use asd db.data.insertOne({hello: "world"}) # fail
yopp
вероятно вы хотите вот так
yopp
а по поводу updateUsers, там есть вот такое вот требование You must have access that includes the revokeRole action on all databases in order to update a user’s roles array.
yopp
т.е. qwe-admin не может использовать updateUsers для обновления ролей, не имея привилегии revokeRole со скоупом db: “”
yopp
но при этом revokeRolesFromUser и grantRoleToUser работают
Mikhail
хм, пойду попробую
Mikhail
добавил кастомную роль с revokeRole. "user" : "cs", "db" : "admin", "roles" : [ { "role" : "dbOwner", "db" : "qwe" }, { "role" : "revokeRoleCustomDataRole", "db" : "admin" } ], Заработало
Mikhail
@dd_bb спасибо большое)
yopp
в принципе, updateUser использовать не стоит, кроме разве что customData и ограничения доступа по адресам
Mikhail
началось всё с веб UI для управления пользователями. там удобнее использовать updateUser, чтоб был только один метод, одна форма
yopp
вы можете посчитать дифф ролей и соотвествующими командами добавить/удалить роли
Vladimir
Как организовать взаимные связи в монго? Если я добавлю в Запись коллекции А ссылку ObjectId на скажем запись из коллекции B, то получается что я тут же должен добавить с запись коллекции B сылку на только что добавленую запись из коллекции A ( или запушить в массив ссылок если 1:N), а при изменении и удалении рабирать весь этт гемморой руками? Или есть более простые способы?
Google
Всем привет можете помочь я делаю поиск по user_id И telegram_id получаю пустой массив [ ] user_id есть инфо а telegram_id нет как исправить чтобы было поиск по двум
Google
Vladimir
можем вам больше реляционная БД подойдет?
Мне - да. Но есть заказчик. Это как в Ростове-на-Дону, в позапрошлом веке, чувак заказал дом. Приходит на стройку, говорит а где колонны, я ж просил что бы колонны были. Архитектор говорит так этож Ренессанс. А заказчик в ответ, за заказ тебе деньги тоже Ренессанс платить будет?
Joe
Всем привет можете помочь я делаю поиск по user_id И telegram_id получаю пустой массив [ ] user_id есть инфо а telegram_id нет как исправить чтобы было поиск по двум
Ты зачем внутри $and запихал 2 or??? Достаточно вместо всего этого так { $or: [{ user_id: id}, {telegram_id: id}] } Будет искать по 1 из 2 полей
Joe
Так получаю [ ] массив
Условие продиктуй. Как должен быть поиск?
Google
Скажем я хочу искать по user_id + telegram_id но может быть " " telegram_id поиск должен работать хотябы из какойто из них совподает