Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1K
Vistas
no se puede autenticar con el controlador mongodb golang

Estoy usando la versión 4.2.13 de la comunidad mongodb y voy a la versión 1.5 del controlador.

Mi aplicación go se ejecuta en el mismo host que db, pero aparece el siguiente error al intentar establecer una conexión:

 connection() error occured during connection handshake: auth error: sasl conversation error: unable to authenticate using mechanism "SCRAM-SHA-256": (AuthenticationFailed) Authentication failed.

Así es como creé la cuenta de administrador:

 use admin db.createUser({ user: "admin1", pwd: "passwd12#$", roles: ["root"], mechanisms: ["SCRAM-SHA-256"] }) db.system.users.update( { _id: "admin.admin1", "db": "admin" }, { $addToSet: { authenticationRestrictions: { clientSource: ["127.0.0.1"] } } } )

Ir al fragmento de código de la aplicación

 package main import ( "context" "fmt" "time" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo/options" ) func main() { uri := fmt.Sprintf( "mongodb://%s:%s@%s:%d/admin?authSource=admin&authMechanism=SCRAM-SHA-256", "admin1", "passwd12#$", "127.0.0.1", 27017, ) // Prints "mongodb://admin1:passwd12#$@127.0.0.1:27017/admin?authSource=admin&authMechanism=SCRAM-SHA-256" fmt.Println(uri) ctx, cancel := context.WithTimeout(context.Background(), 10 * time.Second) defer cancel() client, err := mongo.Connect( ctx, options.Client().ApplyURI(uri), ) if err != nil { panic(err) } defer func() { err = client.Disconnect(ctx) if err != nil { panic(err) } }() err = client.Ping(ctx, nil) if err != nil { panic(err) } fmt.Println("pinged") }

Intenté lo siguiente, pero todos ellos no funcionaron:

  • Codificación de nombre de usuario y contraseña usando url.QueryEscape
  • Intentando "localhost" en lugar de "127.0.0.1"
  • Eliminando "authMechanism=SCRAM-SHA-256" en uri

Como nota al margen, conectándose al shell de Mongo con exactamente el mismo uri, y funcionó.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Agregue ssl=false a su uri. Trabajó para mi

over 4 years ago · Santiago Trujillo Denunciar

0

Puede intentar usar 'options.Credential' para pasar la configuración de autenticación.

Parece una forma más limpia que formatear un URI que debe analizarse más adelante.

https://docs.mongodb.com/drivers/go/current/fundamentals/auth/

 clientOpts := options.Client().SetHosts( []string{"localhost:27017"}, ).SetAuth( options.Credential{ AuthSource: "<authenticationDb>", AuthMechanism: "SCRAM-SHA-256", Username: "<username>", Password: "<password>", } ) client, err := mongo.Connect(context.TODO(), clientOpts)
over 4 years ago · Santiago Trujillo Denunciar

0

Según la documentación de MongoDB para el proceso de autenticación, hay un parámetro para identificar qué base de datos se usa para la autenticación además de la base de datos de destino en el URI.

Mientras estás en mongoshell puedes usar esta línea

 mongo "mongodb://Admin:${DBPASSWORD}@<host>:<port>/admin?authSource=admin"

Usé esa información para agregar ?authSource=admin a mi CONNECTION_URL

 CONNECTION_URL=mongodb://root:example@mongo:27017/my_database?retryWrites=true&w=majority&authSource=admin

Eso funcionó para mí. Espero que lo haga por ti también.

Para obtener información detallada, consulte https://www.mongodb.com/features/mongodb-authentication

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda