Skip to main content
If you’re using a managed MySQL service, check our provider-specific guides for step-by-step instructions tailored to your platform:
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/planetscale.svg?fit=max&auto=format&n=9yUap0SLGrotT8se&q=85&s=35495c84efd8905128d4c2549f6292af

PlanetScale

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/7jtPliLLIO4gCxrB/images/data-source-connections/ovh.svg?fit=max&auto=format&n=7jtPliLLIO4gCxrB&q=85&s=b431da5df8cda41e3e710c101b07b0ac

OVHcloud

Prerequisites

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

Connect MySQL to VexiData

1

Gather your connection details

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

Allow VexiData through your firewall (if applicable)

If your MySQL 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 servers — 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 MySQL accepts remote connections

By default, MySQL may only listen on localhost. If your database is on a remote server, make sure it’s configured to accept external connections:
  1. In your MySQL configuration file (my.cnf or my.ini), set:
[mysqld]
bind-address = 0.0.0.0
  1. Restart MySQL for the change to take effect.
  2. Verify your MySQL user is allowed to connect from remote hosts. Users created with 'localhost' can only connect locally:
-- Check if your user allows remote connections
SELECT user, host FROM mysql.user WHERE user = 'your_username';
If the host column shows localhost or 127.0.0.1, you’ll need to create a user that allows remote access (see the read-only user section below).
Managed database services (AWS RDS, PlanetScale, etc.) handle this automatically. You only need this step for self-hosted MySQL.
4

Add the connection in VexiData

  1. Go to Data Sources in VexiData
  2. Click MySQL 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
Port3306 (or your custom port)
DatabaseYour database name
UsernameYour MySQL username
PasswordYour MySQL 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 (% allows connections from any host)
CREATE USER 'vexidata'@'%' IDENTIFIED BY 'your-secure-password';

-- Grant read-only access to your database
GRANT SELECT ON your_database.* TO 'vexidata'@'%';

-- Apply the changes
FLUSH PRIVILEGES;
To restrict access to specific tables instead of the entire database:
GRANT SELECT ON your_database.orders TO 'vexidata'@'%';
GRANT SELECT ON your_database.customers TO 'vexidata'@'%';
FLUSH PRIVILEGES;

Troubleshooting

This means VexiData can’t reach your server. Check:
  • Your firewall allows inbound connections on port 3306 from VexiData’s IPs
  • bind-address in your MySQL config is set to 0.0.0.0 (not 127.0.0.1)
  • 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 3306
  • Verify the username and password are correct
  • Check that the MySQL user allows connections from remote hosts. Run SELECT user, host FROM mysql.user; to see allowed hosts — if it shows localhost, the user can’t connect remotely
  • Create a user with '%' as the host to allow connections from any IP: CREATE USER 'user'@'%' IDENTIFIED BY 'password';
  • The MySQL user might not have permissions on the specified database. Grant access with: GRANT SELECT ON your_database.* TO 'user'@'%';
  • Run SHOW GRANTS FOR 'your_user'@'%'; to verify current permissions
  • Check that your user has SELECT permissions on the tables in the database
  • Verify you entered the correct database name — MySQL database names are case-sensitive on Linux
  • Run SHOW TABLES; in the MySQL CLI to confirm tables exist in the database
  • If your server requires SSL, VexiData will attempt SSL automatically
  • For self-hosted servers, ensure MySQL SSL is properly configured with valid certificates
  • Check that require_secure_transport is set correctly in your MySQL config