Проблемы с разрешениями при подключении к mongodb - PullRequest
0 голосов
/ 06 мая 2020

Я использую docker изображение mongo, и я расширяю его, чтобы создать пользователя и назначить разрешения на сборку образа с помощью такой строки COPY init.sh /docker-entrypoint-initdb.d/

Вот инициализация sh:

#!/bin/bash
set -e;

mongo -u mongo -p asdfasdf --authenticationDatabase admin <<-EOJS
    use admin;
    db.createUser({
      user: "mongouser",
      pwd: "asdfasdf",
      roles: []
    });

    db.grantRolesToUser(
      "mongouser",
      [
        "root",
        {role: "readWrite", db: "translations"},
        {role: "readWrite", db: "notifications"}
      ]
    );

    exit;
    EOJS

все, выглядит хорошо, когда я проверяю терминал, я вижу, что пользователь существует и имеет все разрешения

root@8f26d6da46a7:/# mongo -u mongo -p asdfasdf  --authenticationDatabase admin 
> use admin
switched to db admin
> db.system.users.find();
{ "_id" : "admin.mongo", "userId" : UUID("7197ece0-014c-44ea-a5d9-cbb6ef683582"), "user" : "mongo", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "hRtMnmboNWoZMK0uzbftpQ==", "storedKey" : "AoFg3PCSQpcT/mcl94w8Kb1C0kg=", "serverKey" : "V1gll09EhlqAnk3kVoWn3s+0X5c=" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "phs+erLhT7CwBHqo9ruK5eN7JO2GVC9t8ovutQ==", "storedKey" : "Rv8CTc/b1hY6xFAdyXjC5nFdvwbvxFzeln065rEMjyI=", "serverKey" : "VkkZ1BNBf5gfduuHMXGQlGgrumMct1nvbC8AEfFJXvw=" } }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
{ "_id" : "admin.mongouser", "userId" : UUID("74ad059c-57de-4a75-93c4-3d3bb00d5a14"), "user" : "mongouser", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "hh2dgliZhjl/1Is97rwiCg==", "storedKey" : "nkD+K7dbnI1PMks/gae4EuADm+Q=", "serverKey" : "696PKwhA+8Aib6QEfWRxkH0HXgE=" }, "SCRAM-SHA-256" : { "iterationCount" : 15000, "salt" : "4SE8LG8dOP07QJME8dwhTyEicmQtcIlRZjPnsQ==", "storedKey" : "7LPWRkX1U0MVfKfvQ2Pf7fMz7T5MntMV6tS5JfgFTmU=", "serverKey" : "nTk38FwgZPPf9Tlv5/Ow5C+SFvS01ciTkjqwzRp5HWs=" } }, "roles" : [ { "role" : "readWrite", "db" : "notifications" }, { "role" : "root", "db" : "admin" }, { "role" : "readWrite", "db" : "translations" } ] }

, но когда приложение PHP пытается выполнить какой-то запрос выдает ошибку Authentication failed. для обеих баз данных.

Раньше он работал, когда я использую только одну базу данных (translations), но после добавления разрешений для базы данных уведомлений он перестает работать для обеих баз данных.

What I ' м делаю не так, кажется, права установлены правильно?

1 Ответ

0 голосов
/ 06 мая 2020

хорошо, я заставляю его работать так

#!/bin/bash
set -e;

mongo -u mongo -p asdfasdf --authenticationDatabase admin <<-EOJS
    use notifications;
    db.createUser({
      user: "mongouser",
      pwd: "asdfasdf",
      roles: [  {role: "readWrite", db: "notifications" }  ]
    });
    use translations;
    db.createUser({
      user: "mongouser",
      pwd: "asdfasdf",
      roles: [  {role: "readWrite", db: "translations" }  ]
    });

    exit;
    EOJS

, но почему мне нужно создавать отдельных пользователей, почему я не могу назначить один и тот же usr нескольким базам данных?

...