# Redshift

{% hint style="warning" %}
**IP RESTRICTIONS**

Make sure to allow traffic from one of the Paradime IPs in your firewall depending on the data location selected.

👉 See also: [Paradime IP addresses](https://docs.paradime.io/app-help/developers/ip-restrictions).
{% endhint %}

{% hint style="info" %}
We advise creating a new Redshift user and grant the suggested access required to create tables and views in your Production database.
{% endhint %}

## Create a Redshift user

In Redshift, you can run the below script to create a new user and grant access to your database/schema. Make sure you run these commands as an **`Account Admin`.**

### Suggested permissions

This set of permissions will enable Paradime to read from and create tables and views when running production jobs in you Redshift database.

{% code lineNumbers="true" %}

```sql
-- create group
create group transformer;

-- create user and assign to group
create user paradime_prod_user
    password '<generate_password>'
    in group transformer;

-- grant privileges to the user group
grant select on all tables in schema information_schema to group transformer;
grant select on all tables in schema pg_catalog to group transformer;

-- for each schema:
grant usage on schema <schema_name> to group transformer;
grant select on all tables in schema <schema_name> to group transformer;

-- grant privileges to user group to create in database
grant create on database <your_database> to group transformer;
```

{% endcode %}

### Maintain privileges <a href="#maintain-privileges" id="maintain-privileges"></a>

In Redshift after each dbt™️ run in production you need to make sure to grants the correct privileges as Redshift doesn't not support grant on future schemas.&#x20;

The `paradime_prod_user` user should be able to read new schemas created in your production runs.

{% hint style="info" %}
Check[ this](https://docs.getdbt.com/blog/configuring-grants) guide on using grants and hooks.
{% endhint %}

## Add Scheduler Connection

1. Click **Settings** in the top menu bar of the Paradime interface to access **Account Settings**
2. In the left sidebar, click "**Connections**"
3. Click "**Add New**" next to the **Bolt Schedules** section
4. Select "Redshift" and fill out the corresponding fields.&#x20;

<figure><img src="https://2337193041-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHET0AD04uHMgdeLAjptq%2Fuploads%2FFFtIIbODqFvP27j0mlaN%2Fprod_connection_redshift_u%26p.png?alt=media&#x26;token=aad77cdd-001c-4381-8842-dfbfd757cc67" alt="" width="540"><figcaption></figcaption></figure>

### Fields Details

Below are list of fields and example to create a connection.

| Field        | Description                                                                                                                                     | Example                           |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |
| Profile Name | The profile name set in your `dbt_project.yaml` . See more [here](https://docs.getdbt.com/docs/core/connect-data-platform/connection-profiles). | **`dbt-redshift`**                |
| Target       | The target name used to identify the connection. See more [here](https://docs.getdbt.com/reference/dbt-jinja-functions/target).                 | **`prod`**                        |
| Host Name    | The hostname of the Redshift database to connect to.                                                                                            | **`xxx.eu-west-2.amazonaws.com`** |
| Port         | Usually `5439` for Redshift.                                                                                                                    | **`5439`**                        |
| Database     | The name of your Redshift production database.                                                                                                  | **`analytics`**                   |
| Username     | The username created with access to the production database.                                                                                    | **`prod_user`**                   |
| Password     | The password set for the user created in Redshift.                                                                                              | **`password_xyz`**                |
| Schema       | The default schema used to build dbt™️ objects at runtime.                                                                                      | **`dbt_prod`**                    |
| Threads      | The number of threads used in this connection. See more [here](https://docs.getdbt.com/docs/running-a-dbt-project/using-threads).               | **`8`**                           |
