Conexión a una instancia de base de datos que ejecuta el motor de base de datos de PostgreSQL - Amazon Relational Database Service

Conexión a una instancia de base de datos que ejecuta el motor de base de datos de PostgreSQL

Una vez que Amazon RDS aprovisione su instancia de base de datos, puede usar cualquier aplicación cliente de SQL estándar para conectarse a la instancia. Antes de que pueda conectarse, la instancia de base de datos tiene que estar disponible y accesible. Si puede conectarse a la instancia desde fuera de la VPC depende de cómo haya creado la instancia de base de datos de Amazon RDS:

  • Si creó la instancia de base de datos como public (pública), los dispositivos y las instancias de Amazon EC2 fuera de la VPC se pueden conectarse a la base de datos.

  • Si creó la instancia de base de datos como private (privada), solo las instancias y dispositivos de Amazon EC2 dentro de Amazon VPC pueden conectarse a la base de datos.

Para verificar si la instancia de base de datos es pública o privada, use la AWS Management Console para ver la pestaña Connectivity & security (Conectividad y seguridad) de la instancia. En Security (Seguridad), puede encontrar el valor “Publicly accessible” (Accesible públicamente), con “No” si es privada, y “Yes” (Sí) si es pública.

Para obtener más información sobre las distintas configuraciones de Amazon RDS y Amazon VPC y cómo afectan a la accesibilidad, consulte Escenarios de acceso a una instancia de base de datos en una VPC.

Instalación del cliente psql

Para conectarse a la instancia de base de datos desde una instancia de EC2, puede instalar un cliente PostgreSQL en la instancia de EC2. Para instalar el cliente psql en Amazon Linux 2023, ejecute el siguiente comando:

sudo dnf install postgresql15

Para instalar el cliente psql en Amazon Linux 2, ejecute el siguiente comando:

sudo amazon-linux-extras install postgresql14

Para instalar el cliente psql en Ubuntu, ejecute el siguiente comando:

sudo apt-get install -y postgresql14

Búsqueda de información de conexión para una instancia de base de datos RDS para PostgreSQL

Si la instancia de base de datos está disponible y accesible, puede conectarse si proporciona la siguiente información a la aplicación cliente de SQL:

  • El punto de conexión de la instancia de base de datos, que sirve como nombre de host (nombre DNS) de la instancia.

  • El puerto en el que la instancia de base de datos está a la escucha. Para PostgreSQL, el puerto predeterminado es el 5432.

  • El nombre de usuario y la contraseña de la instancia de base de datos. El “nombre de usuario maestro” predeterminado para PostgreSQL es postgres.

  • El nombre y contraseña de la base de datos (nombre de base de datos).

Para obtener estos detalles puede usar la AWS Management Console, el comando describe-db-instances de la AWS CLI o la operación DescribeDBInstances de la API de Amazon RDS.

Para buscar el punto de conexión, el número de puerto y el nombre de la base de datos mediante la AWS Management Console
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. Abra la consola de RDS y, a continuación, elija Databases (Bases de datos) para mostrar una lista de las instancias de base de datos.

  3. Seleccione el nombre de la instancia de base de datos de PostgreSQL para mostrar sus detalles.

  4. En la pestaña Connectivity & security (Conectividad y seguridad), copie el punto de enlace. También anote el número de puerto. Necesita el punto de enlace y el número de puerto para conectarse a la instancia de base de datos.

    Obtenga el punto de conexión desde la consola de RDS
  5. En la pestaña Configuration (Configuración), anote el nombre de la base de datos. Si creó una base de datos al crear la instancia de RDS for PostgreSQL, verá el nombre que aparece en DB name (Nombre de base de datos). Si no ha creado una base de datos, el nombre de la base de datos muestra un guion (‐).

    Obtener el nombre de la base de datos de la consola de RDS

A continuación, se muestran dos formas de conectarse a una instancia de base de datos PostgreSQL. En el primer ejemplo, se usa pgAdmin, una conocida herramienta de administración y desarrollo de código abierto para PostgreSQL. En el segundo ejemplo, se usa psql, una utilidad de línea de comandos que forma parte de una instalación de PostgreSQL.

Uso de pgAdmin para conectarse a una instancia de base de datos de RDS for PostgreSQL

Puede usar la herramienta de código abierto pgAdmin para conectarse a una instancia de base de datos de RDS for PostgreSQL. Puede descargar y usar pgAdmin desde http://www.pgadmin.org/ sin tener una instancia local de PostgreSQL en su ordenador cliente.

Para conectarse a una instancia de base de datos de RDS for PostgreSQL mediante pgAdmin
  1. Lance la aplicación pgAdmin en su equipo cliente.

  2. En la pestaña Dashboard (Panel), elija Add New Server (Añadir nuevo servidor).

  3. En el cuadro de diálogo Create - Server (Crear - Servidor), escriba un nombre en la pestaña General para identificar el servidor en pgAdmin.

  4. En la pestaña Connection (Conexión), escriba la siguiente información de su instancia de base de datos:

    • En Host, especifique el punto de enlace, como mypostgresql.c6c8dntfzzhgv0.us-east-2.rds.amazonaws.com.

    • En Port (Puerto), escriba el puerto asignado.

    • Para Username (Nombre de usuario), escriba el nombre de usuario que especificó cuando creó la instancia de base de datos (si cambió el “nombre de usuario maestro” del predeterminado, postgres).

    • En Password (Contraseña), escriba la contraseña que especificó cuando creó la instancia de base de datos.

    Escriba la contraseña que especificó al crear la instancia de base de datos.
  5. Seleccione Guardar.

    Si tiene problemas para conectarse, consulte Solución de problemas de conexiones a la instancia de RDS for PostgreSQL.

  6. Para obtener acceso a una base de datos en el navegador de pgAdmin, expanda Servers (Servidores), la instancia de base de datos y Databases (Bases de datos). Elija el nombre de base de datos de la instancia de base de datos.

    Elija el nombre de base de datos de la instancia de base de datos en el navegador de pgAdmin
  7. Para abrir un panel en el que puede especificar comandos SQL, elija Tools (Herramientas), Query Tool (Herramienta de consulta).

Uso de psql para conectarse a una instancia de base de datos de RDS for PostgreSQL

Puede usar una instancia local de la utilidad de línea de comandos psql para conectarse a una instancia de base de datos de RDS for PostgreSQL. Necesitará que PostgreSQL o el cliente de psql estén instalados en el equipo cliente.

Puede descargar el cliente de PostgreSQL desde el sitio web de PostgreSQL. Para instalar psql, siga las instrucciones específicas de su sistema operativo.

Para conectarse a la instancia de base de datos de RDS for PostgreSQL mediante psql, debe proporcionar la información del host (DNS) y las credenciales de acceso.

Use uno de los siguientes formatos para conectarse a la instancia de base de datos de RDS for PostgreSQL. Cuando se conecte, se le pedirá una contraseña. En los trabajos por lotes o scripts, use la opción --no-password. Esta opción está establecida para toda la sesión.

nota

Un intento de conexión con --no-password falla cuando el servidor requiere autenticación de contraseña y una contraseña no está disponible desde otras fuentes. Para obtener más información, consulte la documentación de psql.

Si es la primera vez que se conecta a esta instancia de base de datos o si aún no creó una base de datos para esta instancia de RDS for PostgreSQL, puede conectarse a la base de datos postgres mediante el “nombre de usuario maestro” y la contraseña.

En Unix, utilice el formato siguiente.

psql \ --host=<DB instance endpoint> \ --port=<port> \ --username=<master username> \ --password \ --dbname=<database name>

En Windows, utilice el formato siguiente.

psql ^ --host=<DB instance endpoint> ^ --port=<port> ^ --username=<master username> ^ --password ^ --dbname=<database name>

Por ejemplo, el siguiente comando se conecta a una base de datos denominada mypgdb en una instancia de base de datos PostgreSQL denominada mypostgresql usando credenciales ficticias.

psql --host=mypostgresql.c6c8mwvfdgv0.us-west-2.rds.amazonaws.com --port=5432 --username=awsuser --password --dbname=mypgdb

Conexión a RDS para PostgreSQL con el controlador JDBC de Amazon Web Services (AWS)

El controlador JDBC de Amazon Web Services (AWS) se ha diseñado como un contenedor JDBC avanzado. Este contenedor complementa y amplía la funcionalidad del controlador JDBC existente. El controlador se admite con el controlador pgJDBC de la comunidad.

Para instalar el controlador JDBC de AWS, añada el archivo .jar del controlador JDBC de AWS (ubicado en la aplicación CLASSPATH) y conserve las referencias al controlador de la comunidad correspondiente. Actualice el prefijo de la URL de conexión correspondiente de la siguiente manera:

  • De jdbc:postgresql:// a jdbc:aws-wrapper:postgresql://

Para obtener más información sobre el controlador JDBC de AWS e instrucciones completas para utilizarlo, consulte el repositorio GitHub del controlador JDBC de Amazon Web Services (AWS).

Conexión a RDS para PostgreSQL con el controlador de Python de Amazon Web Services (AWS)

El controlador de Python de Amazon Web Services (AWS) se ha diseñado como un contenedor de Python avanzado. Este contenedor complementa y amplía la funcionalidad del controlador de Psycopg de código abierto. El controlador de Python de AWS se admite con las versiones 3.8 y posteriores de Python. Puede instalar el paquete de aws-advanced-python-wrapper mediante el comando pip, junto con los paquetes de código abierto de psycopg.

Para obtener más información sobre el controlador de Python de AWS e instrucciones completas para utilizarlo, consulte el repositorio GitHub del controlador de Python de Amazon Web Services (AWS).

Solución de problemas de conexiones a la instancia de RDS for PostgreSQL

Error – FATAL: el nombre de la base de datos no existe

Si al intentar conectarse recibe un error como FATAL: database name does not exist, intente utilizar el nombre de base de datos predeterminado postgres para la opción --dbname.

Error – No se pudo conectar al servidor: se ha agotado el tiempo de espera.

Si no puede conectarse a la instancia de base de datos, el error más frecuente es Could not connect to server: Connection timed out. Si recibe este error, proceda de la siguiente forma:

  • Compruebe que el nombre de host usado es el punto de enlace de la instancia de base de datos y que el número de puerto usado es correcto.

  • Asegúrese de que la accesibilidad pública de la instancia de base de datos está establecida en Yes (Sí) para permitir conexiones externas. Para modificar la configuración Public access (Acceso público), consulte Modificación de una instancia de base de datos de Amazon RDS.

  • Asegúrese de que el usuario que se conecta a la base de datos tenga acceso CONNECT. Puede utilizar la siguiente consulta para proporcionar acceso a la base de datos.

    GRANT CONNECT ON DATABASE database name TO username;
  • Compruebe que el grupo de seguridad asignado a la instancia de base de datos cuenta con las reglas necesarias para permitir el acceso de su conexión a través de cualquier firewall. Por ejemplo, si la instancia de base de datos se creó utilizando el puerto predeterminado 5432, es posible que su empresa tenga reglas de firewall que bloquean las conexiones a ese puerto desde los dispositivos externos de la empresa.

    Para solucionar esto, modifique la instancia de base de datos para que use un puerto diferente. Asegúrese también de que el grupo de seguridad aplicado a la instancia de base de datos permite las conexiones en el nuevo puerto. Para modificar la configuración del Database port (Puerto de base de datos), consulte Modificación de una instancia de base de datos de Amazon RDS.

  • Véase también Errores con reglas de acceso de grupos de seguridad.

Errores con reglas de acceso de grupos de seguridad

El problema de conexión más frecuente se suele producir con las reglas de acceso del grupo de seguridad asignado a la instancia de base de datos. Si al crear la instancia de base de datos usó el grupo de seguridad predeterminado, lo más probable es que ese grupo no tuviera las reglas que le permiten obtener acceso a la instancia.

Para que funcione la conexión, el grupo de seguridad que asignó a la instancia de base de datos al crearla debe permitir el acceso a esa instancia de base de datos. Por ejemplo, si la instancia de base de datos se creó en una VPC, debe tener un grupo de seguridad de VPC que autorice las conexiones. Compruebe si la instancia de base de datos se creó utilizando un grupo de seguridad que no autoriza las conexiones desde el dispositivo o la instancia Amazon EC2 en la que se está ejecutando la aplicación.

Puede añadir o editar una regla de entrada en el grupo de seguridad. En Source (Origen), elegir My IP (Mi IP) permite el acceso a la instancia de base de datos desde la dirección IP detectada en su navegador. Para obtener más información, consulte Proporcionar acceso a la instancia de base de datos en la VPC mediante la creación de un grupo de seguridad.

Igualmente, si la instancia de base de datos se creó fuera de una VPC, debe tener un grupo de seguridad de base de datos que autorice esas conexiones.

Para obtener más información acerca de los grupos de seguridad de Amazon RDS, consulte Control de acceso con grupos de seguridad.