Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Centro de ayuda> Document Database Service> Guía del usuario> Resolución de problemas> Mensaje de error de conexión: excepción: login failed and U_STRINGPREP_PROHIBITED_ERROR
Actualización más reciente 2022-11-07 GMT+08:00

Mensaje de error de conexión: excepción: login failed and U_STRINGPREP_PROHIBITED_ERROR

Síntomas

Se notifica un error al ejecutar el siguiente comando para conectarse a una instancia DDS:

./mongo "mongodb://rwuser:xxxxxx@192.168.0.45:8635,192.168.0.96:8635/test?authSource=admin&replicaSet=replica"

Mensaje de error:

MongoDB shell version v4.0.3
connecting to: mongodb://192.168.0.45:8635,192.168.0.96:8635/test?authSource=admin&replicaSet=replica
2021-11-05T05:52:53.717+0000 I NETWORK  [js] Starting new replica set monitor for replica/192.168.0.45:8635,192.168.0.96:8635
2021-11-05T05:52:53.718+0000 I NETWORK  [ReplicaSetMonitor-TaskExecutor] Successfully connected to 192.168.0.45:8635 (1 connections now open to 192.168.0.45:8635 with a 5 second timeout)
2021-11-05T05:52:53.718+0000 I NETWORK  [js] Successfully connected to 192.168.0.96:8635 (1 connections now open to 192.168.0.96:8635 with a 5 second timeout)
Implicit session: session { "id" : UUID("5945d2a5-8275-4e3c-b06f-632f062a2ead") }
MongoDB server version: 4.0.3
2021-11-05T05:52:53.722+0000 I NETWORK  [js] Marking host 192.168.0.96:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.96:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
2021-11-05T05:52:53.722+0000 I NETWORK  [js] Successfully connected to 192.168.0.45:8635 (1 connections now open to 192.168.0.45:8635 with a 0 second timeout)
2021-11-05T05:52:53.723+0000 I NETWORK  [js] Marking host 192.168.0.45:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
2021-11-05T05:52:53.724+0000 I NETWORK  [js] Marking host 192.168.0.96:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.96:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
2021-11-05T05:52:53.725+0000 I NETWORK  [js] Marking host 192.168.0.45:8635 as failed :: caused by :: Location50692: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR
2021-11-05T05:52:53.725+0000 E QUERY    [js] Error: can't authenticate against replica set node 192.168.0.45:8635 :: caused by :: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR :
DB.prototype._authOrThrow@src/mongo/shell/db.js:1685:20
@(auth):6:1
@(auth):1:2
exception: login failed

Causa posible

La contraseña de la instancia es incorrecta.

Localización de fallas

  • Compruebe si la contraseña de la instancia DDS contiene el signo de at (@), el signo de porcentaje (%) y el signo de exclamación (!). Si es así, escápate de ellos.
  • Las instancias DDS admiten los siguientes caracteres especiales que requieren escapar de ~!@#$ %^ *-_=+?. %@

Solución

Método 1: Cambie la contraseña de la instancia DDS. La nueva contraseña no puede contener el signo at (@), el signo de porcentaje (%) y el signo de exclamación (!).

Método 2: Al conectarse a una instancia DDS, escape el signo at (@), el signo de porcentaje (%) y el signo de exclamación (!) y reemplácelos con códigos URL hexadecimales (códigos ASCII) %40, %25 y %21.

Por ejemplo, si la contraseña es de ****@ %***!, el código URL correspondiente es de **** 40%25*** %21.

Antecedentes

El signo at (@), el signo de porcentaje (%) y el signo de exclamación (!) se procesan como caracteres especiales cuando se conecta a una instancia DDS. Si se utilizan estos caracteres, deben escaparse cuando se utiliza la dirección de conexión de alta disponibilidad para conectarse a la instancia DDS; de lo contrario, la contraseña no se puede analizar.