Skip to main content
If you’re using a managed PostgreSQL service, check our provider-specific guides for step-by-step instructions tailored to your platform:
https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/supabase.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=01f74d03d7dc9b7b772e6b27d612b9b0

Supabase

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/neon.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=29938f159571465a85f54527fd3f377b

Neon

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/digitalocean.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=07bfe7f1cad6dc273fd311044deb076a

DigitalOcean

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/aws.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=ec0bac54f9403a756fcee3551b59afec

AWS RDS

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/render.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=dd216e7c923e830e473de3a552efc0b1

Render

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/heroku.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=598f1ac5f0642e6220ba1b9fb71ea6d5

Heroku

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/railway.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=db1ef351573f47dbb6137d719470b832

Railway

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/laravel-cloud.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=edcd485f28ef08f72e1ce6a44ab2c189

Laravel Cloud

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/google-cloud-sql.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=6402c46f70abeb5c75640caac469d4dc

Google Cloud SQL

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/azure.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=cec7322fde2eb522ad6f0d2c4ed28622

Azure Database

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/aiven.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=6fa81839f8196d019b6dafaeec94ce84

Aiven

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/fly-io.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=edeb3204c5ba51f9bfd5137c4702fd88

Fly.io

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/timescale.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=bcf9fe30176a6e32580b49a5da384b50

Timescale

https://mintcdn.com/mtsdigitalventuressrl/9yUap0SLGrotT8se/images/data-source-connections/cockroachdb.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=fed62c6b410aec5451a9deae3555c92a

CockroachDB

Prerequisites

  • A PostgreSQL database (version 12 or later recommended) that is accessible over the network
  • The database host, port, name, username, and password
  • A VexiData account

Connect PostgreSQL to VexiData

1

Gather your connection details

You need five pieces of information to connect. If you set up PostgreSQL yourself, you’ll already know these. If someone else manages the database, ask your database administrator.
ParameterDescriptionDefault
HostThe hostname or IP address of your PostgreSQL serverlocalhost
PortThe port PostgreSQL is listening on5432
DatabaseThe name of the database you want to querypostgres
UsernameA PostgreSQL user with access to the databasepostgres
PasswordThe password for that user
2

Allow VexiData through your firewall (if applicable)

If your PostgreSQL server is behind a firewall or only accepts connections from specific IPs, add VexiData’s IP addresses:
  • 139.59.53.167
  • 165.22.217.42
Common places to configure this:
  • Cloud VMs (AWS EC2, DigitalOcean Droplets, GCP Compute) — Security Groups or firewall rules
  • Self-hosted serverspg_hba.conf and/or your OS firewall (e.g., ufw, iptables)
  • Managed databases — See the provider-specific guides linked above
If your database is only accessible from localhost or a private network, you’ll need to either expose it to the internet or set up an SSH tunnel. VexiData requires a direct TCP connection to your database.
3

Verify PostgreSQL accepts remote connections

By default, PostgreSQL only listens on localhost. If your database is on a remote server, make sure it’s configured to accept external connections:
  1. In postgresql.conf, set:
listen_addresses = '*'
  1. In pg_hba.conf, add a line allowing VexiData’s IPs (or all IPs if behind a firewall):
host    all    all    139.59.53.167/32    scram-sha-256
host    all    all    165.22.217.42/32    scram-sha-256
  1. Restart PostgreSQL for changes to take effect.
Managed database services (Supabase, Neon, RDS, etc.) handle this automatically. You only need this step for self-hosted PostgreSQL.
4

Add the connection in VexiData

  1. Go to Data Sources in VexiData
  2. Click PostgreSQL to open the connection form
  3. Fill in the details:
FieldValue
Display NameA name to identify this connection (e.g., “Production DB”)
HostYour server’s hostname or IP address
Port5432 (or your custom port)
DatabaseYour database name
Schemapublic (default — change if your tables are in a different schema)
UsernameYour PostgreSQL username
PasswordYour PostgreSQL password
5

Test and save

Click Test & Save Connection. VexiData will verify it can reach your database. Once connected, your schema will be analyzed automatically.
For security, we recommend connecting VexiData with a dedicated read-only user instead of your admin or application user. This ensures VexiData can only read data, never modify it.
-- Create the user
CREATE USER vexidata WITH PASSWORD 'your-secure-password';

-- Grant connect access to the database
GRANT CONNECT ON DATABASE your_database TO vexidata;

-- Grant read access to the public schema
GRANT USAGE ON SCHEMA public TO vexidata;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO vexidata;

-- Ensure future tables are also readable
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO vexidata;
If your tables are in a custom schema, replace public with your schema name in the commands above.

Troubleshooting

This means VexiData can’t reach your server. Check:
  • Your firewall allows inbound connections on the PostgreSQL port from VexiData’s IPs
  • listen_addresses in postgresql.conf is set to '*' (not 'localhost')
  • Your server has a public IP or hostname that resolves correctly
  • If on a cloud VM, the Security Group / firewall rules allow traffic on port 5432
  • Verify the username and password are correct
  • Check pg_hba.conf allows the authentication method you’re using (e.g., scram-sha-256 or md5) for remote connections
  • Some setups use peer or ident authentication which only works for local connections — remote connections need password-based auth
  • PostgreSQL is case-sensitive for database names. Make sure the name matches exactly (e.g., MyApp is different from myapp)
  • Run \l in psql to list all available databases
  • Confirm your tables are in the public schema. If they’re in a custom schema (e.g., app or api), update the Schema field in VexiData
  • Check that your user has SELECT permissions: GRANT SELECT ON ALL TABLES IN SCHEMA public TO your_user;
  • If your server requires SSL, VexiData will attempt SSL automatically
  • For self-hosted servers, ensure your PostgreSQL SSL certificates are properly configured
  • Check that ssl = on is set in postgresql.conf if you require encrypted connections