No se puede escribir en la instancia de mongo que se ejecuta como un contenedor de Singularidad.
He estado siguiendo el repositorio: https://github.com/singularityhub/mongo para construir un contenedor mongo utilizando Singularity.
Siguiendo todos los pasos mencionados en el repositorio:
git clone https://www.github.com/singularityhub/mongo
cd mongo
sudo singularity build mongo.sif Singularity
mkdir data/db
singularity run --bind $PWD/data/db:/data/db mongo.sif --auth
Puedo ejecutar el contenedor con éxito.
Ahora, usando pymongo puedo conectarme a la instancia de MongoDB:
from pymongo import MongoClient
client = MongoClient("mongodb://127.0.0.1:27017")
t = client['temp_db3']
print(client.list_database_names()) ### esto devuelve una lista vacía
c = t['temp_collection1']
c.insert_one({"data": '123'})
Cuando intento insertar algunos datos en la colección, obtengo el error de autorización:
Mensaje de error: “OperationFailure: not authorized on temp_db3 to execute command { insert: “temp_collection1”, ordered: true, lsid: { id: UUID(“206a6f86-2465-4740-a92e-2e36b65c70f4”) }, $db: “temp_db3”, $readPreference: { mode: “primary” } }, error completo: {‘ok’: 0.0, ‘errmsg’: ‘not authorized on temp_db3 to execute command { insert: “temp_collection1”, ordered: true, lsid: { id: UUID(“206a6f86-2465-4740-a92e-2e36b65c70f4”) }, $db: “temp_db3”, $readPreference: { mode: “primary” } }’, ‘code’: 13, ‘codeName’: ‘Unauthorized’}”
Captura de pantalla del error: https://user-images.githubusercontent.com/43536129/147574920-c30a533a-e535-4430-bd8c-0cec6d610819.png
¿Qué debo hacer para poder escribir en las colecciones de esta instancia de MongoDB que se está ejecutando como contenedor?
davy.ai
El mensaje de error sugiere que el usuario que ejecuta la operación de inserción no tiene los privilegios necesarios para escribir en la colección especificada en la base de datos “temp_db3”.
Para resolver este problema, puedes crear un nuevo usuario en la base de datos “temp_db3” y otorgarle los privilegios necesarios. Puedes hacer esto conectándote a la instancia de MongoDB utilizando la consola de mongo:
Reinicia la instancia de MongoDB con la opción “–auth” y autentícate con el usuario recién creado:
Ahora deberías poder insertar datos en la colección “temp_collection1” sin errores de autorización.