Saltar al contenido

¿Cómo soluciono los problemas cuando me conecto a mi clúster de base de datos de Aurora compatible con PostgreSQL?

10 minutos de lectura
0

Quiero solucionar problemas de conexión con mi clúster de base de datos (DB) de la edición de Amazon Aurora compatible con PostgreSQL.

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Comprobar que se han configurado los parámetros de conexión correctos

Sigue estos pasos:

  1. Abre la consola de Amazon Relational Database Service (Amazon RDS).
  2. En el panel de navegación, selecciona Bases de datos.
  3. Selecciona tu clúster de base de datos de Aurora compatible con PostgreSQL.
  4. En la pestaña Conectividad y seguridad, anota los siguientes valores:<br id=hardline_break/> Punto de enlace de escritor o lector<br id=hardline_break/> Número de puerto predeterminado 5432
  5. Comprueba que tienes la contraseña, el nombre de usuario y el nombre de la base de datos correctos.

Para probar la conexión, ejecuta el siguiente comando psql:

psql -h your-cluster-endpoint -p 5432 -U your-username -d your-database-name

Nota: Sustituye your-cluster-endpoint por el punto de enlace de tu clúster, your-username por el nombre de usuario de tu base de datos y your-database-name por el nombre de tu base de datos.

Prueba de la conectividad de la red

Para comprobar que tu cliente puede llegar al punto de enlace del clúster de base de datos de Aurora compatible con PostgreSQL, ejecuta los siguientes comandos.

Uso de telnet

A continuación, ejecuta el siguiente comando telnet:

telnet your-cluster-endpoint 5432

Nota: Sustituye your-cluster-endpoint por el punto de enlace del clúster.

Si la conexión se realiza correctamente, el resultado es similar al siguiente:

Trying xxx.xxx.xxx.xxx...
Connected to your-cluster-endpoint.

Uso de netcat

Si telnet no está disponible, ejecuta el siguiente comando netcat:

nc -zv your-cluster-endpoint 5432

Nota: Sustituye your-cluster-endpoint por el punto de enlace del clúster.

Si la conexión se realiza correctamente, el resultado es similar al siguiente:

Connection to your-cluster-endpoint 5432 port [tcp/postgresql] succeeded!

Si se agota el tiempo de espera de los comandos anteriores o se produce un error, significa que tienes un problema de conectividad de red. Comprueba que has configurado las reglas de entrada del grupo de seguridad correctas.

Comprobación de las reglas de entrada del grupo de seguridad

Sigue estos pasos:

  1. Abre la consola de Amazon RDS.
  2. En el panel de navegación, selecciona Bases de datos.
  3. Selecciona tu clúster de base de datos de Aurora compatible con PostgreSQL.
  4. En la sección Conectividad y seguridad, anota el nombre del grupo de seguridad en Grupos de seguridad de VPC.
  5. Abre la consola de Amazon Virtual Private Cloud (Amazon VPC).
  6. En el panel de navegación, selecciona Grupos de seguridad.
  7. Selecciona tu grupo de seguridad.
  8. Elige Reglas de entrada.
  9. Confirma que hay una regla con la siguiente configuración:<br id=hardline_break/> El tipo es PostgreSQL o TCP personalizado.<br id=hardline_break/> El puerto es 5432.<br id=hardline_break/> El origen es la dirección IP de tu cliente o el bloque de CIDR apropiado.

Para usar la consola de Amazon VPC para agregar una regla de entrada a tu grupo de seguridad, consulta Configuración de reglas de grupos de seguridad.

Para usar la AWS CLI para agregar una regla de entrada, ejecuta el siguiente comando authorize-security-group-ingress:

aws ec2 authorize-security-group-ingress \
  --group-id your-group-id \
  --protocol tcp \
  --port 5432 \
  --cidr your-IP-address/32 \
  --region your-region

Nota: Sustituye your-group-id por el ID de tu grupo de seguridad, your-IP-address/32 por tu dirección IP o bloque de CIDR y your-region por tu región de AWS.

Comprobación de las reglas de entrada de ACL de la red de VPC

Para comprobar las reglas de ACL de la red, sigue estos pasos:

  1. Abre la consola de Amazon VPC.
  2. En el panel de navegación, selecciona ACL de la red.
  3. Selecciona la ACL de la red asociada a la subred de base de datos.
  4. Selecciona la pestaña Reglas de entrada.
  5. Confirma que hay una regla con la siguiente configuración:<br id=hardline_break/> El tipo es PostgreSQL (5432) o Todo el tráfico.<br id=hardline_break/> El origen es el rango de direcciones IP de tu cliente o 0.0.0.0/0.

Para agregar una regla de ACL de la red, consulta Agregar reglas.

Comprobación de la configuración de subred y enrutamiento

Para comprobar la configuración de la subred, sigue estos pasos:

  1. Abre la consola de Amazon RDS.
  2. En el panel de navegación, selecciona Bases de datos.
  3. Selecciona tu clúster de base de datos de Aurora compatible con PostgreSQL.
  4. En la pestaña Conectividad y seguridad, anota el nombre del grupo de subredes de base de datos.
  5. Elige el enlace del grupo de subredes.
  6. Comprueba que las subredes estén en las zonas de disponibilidad y la VPC correctas.

Para comprobar la configuración de la tabla de enrutamiento, consulta Determinar la tabla de enrutamiento de una subred.

Comprobación de los permisos a nivel de base de datos

Comprueba que el usuario de la base de datos tiene los permisos necesarios para conectarse a la base de datos.

Conexión como usuario principal

Ejecuta el siguiente comando psql:

psql -h your-cluster-endpoint -p 5432 -U primary-username -d postgres

Nota: Sustituye your-cluster-endpoint por el punto de enlace de tu clúster y primary-username por tu nombre de usuario principal.

Comprobación de permisos de usuario

Después de conectarte como usuario principal, ejecuta las siguientes consultas SQL para comprobar los permisos de usuario.

Para obtener una lista de todos los usuarios de la base de datos, ejecuta el siguiente comando:

SELECT usename, usesuper, usecreatedb, useconnlimit FROM pg_user ORDER BY usename;

Para comprobar los permisos de usuario específicos, ejecuta el siguiente comando:

SELECT usename, usesuper, usecreatedb, useconnlimit FROM pg_user WHERE usename = 'your-username';

Nota: Sustituye your-username por el nombre de usuario del usuario cuyos permisos quieres comprobar.

Para enumerar las bases de datos y sus propietarios, ejecuta el siguiente comando:

SELECT datname, datowner, datacl FROM pg_database WHERE datname NOT IN ('template0', 'template1');

Creación o modificación de los permisos de usuario

Si el usuario no existe o no tiene permisos suficientes, ejecuta los siguientes comandos.

Para crear un usuario nuevo, ejecuta el siguiente comando:

CREATE USER your_username WITH PASSWORD 'your_password';

Nota: Sustituye your_username por el nombre de usuario del usuario que estás creando y your_password por una contraseña segura.

Para conceder al usuario permiso para conectarse a una base de datos, ejecuta el siguiente comando:

GRANT CONNECT ON DATABASE your_database_name TO your_username;

Nota: Sustituye your_database_name por el nombre de tu base de datos y your_username por el nombre de usuario al que estás concediendo el permiso.

Para conceder al usuario permiso para usar un esquema, ejecuta el siguiente comando:

GRANT USAGE ON SCHEMA public TO your_username;

Nota: Sustituye your_username por el nombre de usuario del usuario al que estás concediendo el permiso.

Para conceder el permiso de usuario a una tabla, ejecuta el siguiente comando:

GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO your_username;

Nota: Sustituye your_username por el nombre de usuario al que estás concediendo el permiso.

Supervisión de las cuotas de conexión

Comprueba si el clúster de base de datos ha alcanzado su cuota máxima de conexión.

Comprobación de las conexiones actuales

Conéctate a tu clúster de base de datos y, a continuación, ejecuta las siguientes consultas SQL.

Para comprobar el recuento actual de conexiones, ejecuta el siguiente comando:

SELECT count(*) as current_connections FROM pg_stat_activity WHERE state = 'active';

Para comprobar la configuración máxima de conexiones, ejecuta el siguiente comando:

SHOW max_connections;

Para ver las conexiones activas por usuario, ejecuta el siguiente comando:

SELECT usename, count(*) as connection_count FROM pg_stat_activity GROUP BY usename ORDER BY connection_count DESC;

Modificación del parámetro max_connections

Para modificar el parámetro max_connections, consulta Modificación de los parámetros en un grupo de parámetros de clúster de base de datos en Amazon Aurora.

Prueba de conexiones SSL/TLS

Aurora compatible con PostgreSQL admite conexiones cifradas. Prueba las conexiones cifradas y no cifradas.

Prueba sin SSL

Para probar la conexión sin SSL, ejecuta el siguiente comando psql:

psql "host=your-cluster-endpoint port=5432 dbname=your-database user=your-username sslmode=disable"

Nota: Sustituye your-cluster-endpoint por el punto de enlace de tu clúster, your-database por el nombre de tu base de datos y your-username por tu nombre de usuario.

Prueba con SSL

Para probar tu conexión con SSL, ejecuta el siguiente comando psql:

psql "host=your-cluster-endpoint port=5432 dbname=your-database user=your-username sslmode=require"

Nota: Sustituye your-cluster-endpoint.cluster por el punto de enlace de tu clúster, your-database por el nombre de tu base de datos y your-username por tu nombre de usuario.

Descarga y uso del certificado de CA de RDS

Para descargar el certificado de la autoridad de certificación (CA) de RDS, ejecute el siguiente comando wget:

wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem

Para usar el certificado, ejecuta el siguiente comando psql:

psql "host=your-cluster-endpoint port=5432 dbname=your-database user=your-username sslmode=verify-full sslrootcert=global-bundle.pem"

Nota: Sustituye your-cluster-endpoint por el punto de enlace de tu clúster, your-database por el nombre de tu base de datos y your-username por tu nombre de usuario.

Solución de problemas de autenticación de bases de datos de IAM

Si utilizas la autenticación de bases de datos de AWS Identity and Access Management (IAM), sigue estos pasos.

Generación de un token de autenticación

Para generar un token de autenticación, ejecuta el siguiente comando generate-db-auth-token de la AWS CLI:

aws rds generate-db-auth-token \
  --hostname your-cluster-endpoint \
  --port 5432 \
  --region your-region \
  --username your-iam-username

Nota: Sustituye your-cluster-endpoint por el punto de enlace de tu clúster, your-region por tu región y your-iam-username por el nombre de usuario de tu base de datos de IAM.

Uso de la autenticación de IAM para conectarse

Ejecuta el siguiente comando psql:

psql "host=your-cluster-endpoint port=5432 dbname=your-database user=your-iam-username password=your-generated-token"

Nota: Sustituye your-cluster-endpoint por el punto de enlace de tu clúster, your-database por el nombre de tu base de datos y your-iam-username por tu nombre de usuario habilitado para IAM. Además, sustituye your-generated-token por el token que generaste.

Comprobación de los permisos de la política de IAM

Asegúrate de adjuntar la siguiente política al usuario o rol de IAM:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds-db:connect"
      ],
      "Resource": [
        "arn:aws:rds-db:region:account-id:dbuser:cluster-resource-id/your-iam-username"
      ]
    }
  ]
}

Nota: Sustituye region por tu región, account-id por el ID de tu cuenta de AWS, cluster-resource-id por el ID de recurso de tu clúster de base de datos y your-iam-username por el nombre de usuario de tu base de datos de IAM.

Para solucionar más problemas de conexión, consulta Solución de problemas de conexiones a la instancia de RDS para PostgreSQL.

Información relacionada

Controlar el tráfico hacia los recursos de AWS mediante grupos de seguridad

Control del tráfico de la subred con listas de control de acceso de la red

OFICIAL DE AWSActualizada hace 5 meses