Skip to content

Connect to PostgreSQL database

Connecting MindsDB to your PostgreSQL database can be done in two ways:


To connect to your PostgreSQL Server from MindsDB, you will need to install the MySQL foreign data wrapper for PostgreSQL.

How to install the MySQL foreign data wrapper

MindsDB Studio

Using MindsDB Studio, you can connect to the PostgreSQL database with a few clicks.

Connect to database

  1. From the left navigation menu, select Database Integration.
  2. Click on the ADD DATABASE button.
  3. In the Connect to Database modal:
    1. Select PostgreSQL as the Supported Database.
    2. Add the Database name.
    3. Add the Hostname.
    4. Add Port.
    5. Add PostgreSQL user.
    6. Add Password for PostgreSQL user.
    7. Click on CONNECT.

Connect to PostgreSQL

Create new Datasource

  1. Click on the NEW DATASOURCE button.
  2. In the Datasource from DB integration modal:
    1. Add Datasource Name.
    2. Add Database name.
    3. Add SELECT Query (e.g. SELECT * FROM my_database)
    4. Click on CREATE.

Create PostgreSQL Datasource

That's it🎉 🏆 💻

You have successfully connected to PostgreSQL from MindsDB Studio. The next step is to train the Machine Learning model.

PSQL client

How to extend MindsDB configuration

Our suggestion is to always use MindsDB Studio to connect MindsDB to your database. If you still want to extend the configuration without using MindsDB Studio follow the steps below.

Before using psql client to connect MindsDB and PostgreSQL Server, you will need to add additional configuration before starting MindsDB Server. Create a new config.json file. Expand the example below to preview the configuration example.

Configuration example
   "api": {
       "http": {
           "host": "",
           "port": "47334"
       "mysql": {
           "host": "",
           "password": "",
           "port": "47335",
           "user": "root"
   "config_version": "1.4",
   "debug": true,
   "integrations": {
       "default_postgres": {
           "database": "postgres",
           "publish": true,
           "host": "localhost",
           "password": "postgres",
           "port": 5432,
           "type": "postgres",
           "user": "postgres"
   "log": {
       "level": {
           "console": "DEBUG",
           "file": "INFO"
   "storage_dir": "/storage"

All of the options that should be added to the config.json file are:

  • api['http] -- This key is used for starting the MindsDB http server by providing:
    • host(default - The mindsDB server address.
    • port(default 47334) - The mindsDB server port.
  • api['mysql'] -- This key is used for database integrations that works through MySQL protocol. The required keys are:
    • user(default root).
    • password(default empty).
    • host(default
    • port(default 47335).
  • integrations['default_postgres'] -- This key specifies the integration type, in this case default_postgres. The required keys are:
    • user(default postgres) - The Postgres user name.
    • host(default - Connect to the PostgreSQL server on the given host.
    • password - The password of the Postgres account.
    • type - Integration type(mariadb, postgresql, mysql, clickhouse, mongodb).
    • port(default 5432) - The TCP/IP port number to use for the connection.
    • publish(true|false) - Enable PostgreSQL integration.
  • log['level'] -- The logging configuration(not required):
    • console - "INFO", "DEBUG", "ERROR".
    • file - Location of the log file.
  • storage_dir -- The directory where mindsDB will store models and configuration.

After creating the config.json file, you will need to start MindsDB and provide the path to the newly created config.json:

python3 -m mindsdb --api=http,mysql --config=config.json

The --api parameter specifies the type of API to use, in this case HTTP and MySQL. The --config parameter specifies the location of the configuration file.

Start MindsDB with config

If MindsDB is successfully connected to your PostgreSQL database, it will create a new schema mindsdb and new table predictors. After starting the server, you can run a SELECT query from your psql-client to make sure integration has been successful.

SELECT * FROM mindsdb.predictors;

SELECT from MindsDB predictors table

That's it 🎉 🏆 💻

You have successfully connected MindsDB Server and PostgreSQL. The next step is to train the Machine Learning model.