> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prequel.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Generic Postgres

> Configuring your generic Postgres destination.

## Prerequisites

* If your Postgres database is protected by security groups or other firewall settings, you will need to have our static IP available to complete Step 1.

<Steps>
  <Step title="Allow access">
    Create a rule in a security group or firewall settings to whitelist:

    * incoming connections to your host and port (usually `5432`) from the static IP.
    * outgoing connections from ports `1024` to `65535` to the static IP.
  </Step>

  <Step title="Create writer user">
    Create a database user to perform the writing of the source data.

    1. Open a connection to your PostgreSQL database.
    2. Create a user for the data transfer by executing the following SQL command.

    ```sql title="Create user" icon="database" theme={null}
    CREATE USER <username> PASSWORD '<some-password>';
    ```

    <Warning>
      **Credential character limitations**

      For user credentials containing special characters, please avoid using the following characters: `@`, `[`, `]`, `/`, `?`, `#`, `"`, `\\`, `+`, space, `&`, `:` as these characters can break connection string parsing.
    </Warning>

    3. Grant user `create` and `temporary` privileges on the database. `create` allows the service to create new schemas and `temporary` allows the service to create temporary tables.

    ```sql title="Grant privileges" icon="database" theme={null}
    GRANT CREATE, TEMPORARY ON DATABASE <database> TO <username>;
    ```

    <Warning>
      **If the `schema` already exists**

      By default, the service creates a new schema based on the destination configuration (in the next step). If you prefer to create the schema yourself before connecting the destination, you must ensure that the writer user has the proper permissions on the schema, using `GRANT ALL ON schema <schema> TO <username>;`
    </Warning>
  </Step>

  <Step title="Add your destination">
    Use the following details to complete the connection setup: **host name**, **database name**, **port**, your chosen **schema name**, **username**, and **password**.
  </Step>
</Steps>
