---
title: Manage JDBC drivers
description: How to create predefined JDBC driver configurations, upload, modify, and delete drivers, and restrict access to JDBC data stores.
platform: self-managed-only
---

# Manage JDBC drivers {: #manage-jdbc-drivers }

You manage Java Database Connectivity (JDBC) drivers by:

* Working with JDBC drivers
* Restricting access for Kerberos authentication systems

!!! info "Availability information"
    **Required permission:** Can manage JDBC database drivers

A driver allows DataRobot to provide a way for users to ingest data from a database via JDBC. The administrator can [upload JDBC driver files](#upload-drivers) (JAR files) for their organization's users to access when creating data connections. As part of driver creation, the administrator can also upload additional JAR files containing library dependencies. Once uploaded, drivers can be modified or deleted only by administrators.

By default, all users have permissions to create, modify (depending on their roles), and share data connections and data sources. (See more information about user [data connection roles](roles-permissions)) If needed, you can prevent access to data stores and data sources for a specific user with the ["Disable Database Connectivity"](manage-users#additional-permissions-options) user permission; this prevents that user from creating new JDBC data connections or importing data from any defined JDBC data sources (from the new project page).

Additionally, for cluster deployments using Kerberos authentication, you can control access to data stores through [validation and variable substitution](#restrict-access-to-jdbc-data-stores).


## Predefined driver configurations {: #predefined-driver-configurations }

When users create data connections for a selected JDBC driver, they specify how to retrieve the data. This may be a defined JDBC URL or a set of parameters. Because creating the JDBC URLs for data connections can be complicated, DataRobot provides predefined configurations for some supported drivers that have parameter support. Driver configurations specify the information users need to provide to retrieve data from their data sources.

Each predefined configuration includes typical information needed to create connections using that type of driver. For example, while connections to Presto driver typically require the catalog and schema, connections to Snowflake driver often need the database and warehouse.

Predefined configurations are available for the following drivers:

- AWS Athena
- Azure SQL
- Azure Synapse
- Google BigQuery
- Intersystems
- kdb+
- Microsoft SQL Server
- MySQL
- Postgres
- Presto
- Redshift
- SAP HANA
- Snowflake
- Treasure Data: Hive

When you add a new driver, you can select to use a predefined configuration (if one exists for that driver), or you can create a custom driver which does not include a configuration.

The steps below describe how to create an instance of a driver.

##  Upload drivers {: #upload-drivers }

The steps below describe how to create a driver instance.

1. Click the profile icon in the top right corner of the application screen, and select **Data Connections** from the dropdown menu.

2. Select the **JDBC Drivers** link:

	![](images/jdbc-drivers.png)

3. In the left-panel **JDBC Drivers** list, click **+ Add new driver**.

	![](images/admin-jdbc-addnewdriver.png)

4. In the displayed dialog, select the type of configuration you are using for this driver:
    - [**Predefined**](#predefined-driver-configurations)&mdash;use a configuration provided by DataRobot
    - **Custom**&mdash;create a configuration when creating data connections

5. If you are adding a driver that has a configuration (**Predefined**), complete the following fields as prompted:

    ![](images/jdbc-driver-predefined-add.png)

    |          Field          |                                                                                                                                               Description                                                                                                                                                |
    |-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
    | Configuration           | Select the configuration to use for the driver you are creating. Configurations for some supported drivers with parameter support in DataRobot are provided for selection. If you don't see the configuration you want then create this as a *custom* driver and specify driver name and driver class.   |
    | Class name (Predefined) | Shows the driver class name defined in this configuration.                                                                                                                                                                                                                                               |
    | Version                 | Enter the version (user-defined) for the driver. This value is required. The combination of driver name and version are used to identify the driver configuration for users.                                                                                                                             |
    | Driver Files *          | Click **+ UPLOAD JAR** to add the driver JAR file. Follow the same process for each additional library dependencies. When uploaded successfully, the JAR filename(s) appear in this field.                                                                                                               |


6. If you are adding a driver that does not include a configuration (**Custom**), complete the following fields as prompted:

    ![](images/jdbc-driver-custom-add.png)

    |     Field      |                                                                                        Description                                                                                         |
    |----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
    | Driver name    | Enter a display name for the driver.                                                                                                                                                       |
    | Class name     | Enter the driver class name. If unknown, refer to the driver documentation.                                                                                                                |
    | Driver Files * | Click **+ UPLOAD JAR** to add the driver JAR file. Follow the same process for each additional library dependencies. When uploaded successfully, the JAR filename(s) appear in this field. |

    \* The JAR driver and dependency file size limit is 100MB. That is, each file upload can be a maximum of 100MB, but totals may exceed that limit.

    !!! note
        DataRobot does not validate uploaded drivers (other than simple extension checking).

7. Click **Create driver** to add the driver. The new driver is shown in the left-panel **JDBC Drivers** list, and the driver configuration is now available to all users in your organization. Drivers created with predefined configurations are named in the format <em>driver name (version)</em>.

    ![](images/admin-jdbc-predefineddriver.png)

###  Modify drivers {: #modify-drivers }

If you are modifying drivers that use <em>predefined</em> configurations, you can change only the version and JAR files for the driver configuration. (The driver name is created automatically as a combination of selected configuration and version.) Also, note that removing the predefined configuration for a driver makes it a driver with a custom configuration (i.e., connections using this driver will require a JDBC URL).

If you are modifying drivers that use <em>custom</em> configurations, you can change the driver name, configuration, class name, or JAR file(s). Adding a configuration to a driver makes it a driver with a predefined configuration. If you do select to add a configuration for the driver, DataRobot automatically verifies that any JDBC URLs for existing data connections are not affected. If that is not necessary, then you can select to skip the URL validation.

!!! note
    	DataRobot recommends that you notify your users about driver configuration modifications that will affect JDBC URLs for existing data connections, so they can recreate them, if needed.

1. Select the driver from the left-panel **JDBC Drivers** list. The information for the driver configuration is added to the main window.

2. If this driver has a predefined configuration:
    * You can modify the version.
    * You can remove the configuration. This changes it to a <em>custom</em> driver, with no configuration.

3. If this driver has a custom configuration:
    * You can modify the driver name or class name.
    * You can add a (predefined) configuration to the driver (**+ ADD CONFIGURATION**). This changes it to a driver with a <em>predefined</em> configuration.

      If there are existing connections to the driver and the new configuration will affect the JDBC URLs (and you still want to make this change), select **Skip data connections verification**. This ensures DataRobot does not validate JDBC URLs for existing data connections.

      As shown in the below image, if existing JDBC URLs are affected by the new configuration and **Skip data connections verification** is <em>not</em> selected, the configuration cannot be added to the driver.

      ![](images/admin-jdbc-addconfig-skip.png)

4. For either type of driver, you can click **UPDATE JAR FILE** to replace the JAR file(s).

5. Click **Save changes** to save modifications to this driver. You see the updated driver listing in the left-panel **JDBC Drivers** list. Any existing data connections for this driver are updated with these changes automatically.

### Delete drivers {: #delete-drivers }

You can delete any driver that is not being used by existing data connections. If it is being used, you must first delete the dependencies.

1. Select the driver in the left-panel **JDBC Drivers** list.
2. In the upper right, click **DELETE DRIVER**. If there are no existing data connections for the driver, DataRobot prompts for confirmation.
3. Click **Delete** to remove the driver.

If there are existing data connections using the driver, DataRobot returns an error:

![](images/jdbc-driver-delete-2.png)

If you see this message, those dependencies first need to be removed (in the **Data Connections** tab). Then, you can try again to delete the driver.


##  Restrict access to JDBC data stores {: #restrict-access-to-jdbc-data-stores }


!!! info "Availability information"
    **Required permission:** Can manage users, Can manage JDBC database drivers

When using Kerberos authentication for JDBC, you can control access to data stores through validation and variable substitution.

###  Control user access {: #control-user-access }

You can restrict the ability to create and modify JDBC data stores that utilize impersonation to only those users with the [admin setting](user-settings) "Can create impersonated Data Store."

Within cluster configuration (`config.yaml`), you can define impersonated keywords that are used by any installed drivers that support impersonation. These keywords could be used to define operations considered "dangerous" and therefore permitted to only select users. By default, no impersonation keywords are defined.

When a user attempts to create or modify a JDBC data store and there are impersonation keywords defined for the installation, DataRobot determines if the URI includes any of the keywords. If the URI includes one or more of the keywords and the "Can create impersonated Data Store" admin setting is enabled for the user, they are allowed to create or modify it. If keywords are included in the URI but the user does not have the "Can create impersonated Data Store" setting enabled, then DataRobot does not allow the request to create or modify it.

###  Variable substitutions {: #variable-substitutions }

The variable substitution syntax,`${datarobot_read_username}`, provides another way to control access to drivers. If that variable is included in the URI when trying to ingest from the data source/data store, DataRobot replaces it with the impersonated account associated with the logged in user.
