To connect to your hosting's MySQL database from your own computer, enable Remote Database Access for your IP, then use your database host, username, password, and port in any MySQL client (a desktop app like TablePlus, DBeaver, MySQL Workbench, or a local script). Remote access is off by default because MySQL isn't meant to sit open on the internet, so this is an explicit opt-in per IP.
Enable remote access
Log in to cPanel (via Services, then your hosting, then the cPanel one-click login), then open Remote Database Access under the Databases section. This is where you tell the server which outside IPs are allowed to connect to MySQL directly, instead of only from scripts running on the server itself (which use localhost by default, as covered in creating MySQL databases).
- Enter your current public IP address and save. If you don't know it, search "what's my ip" in any browser.
- Some tools let you add a hostname instead of a bare IP, useful if your ISP rotates your address and you have a dynamic DNS name pointed at it.
- A wildcard entry (
%) allows any IP to attempt a connection. Avoid it unless you have a specific reason, since it means anyone with your database password can connect from anywhere. If your home or office IP changes often, re-adding it when it changes is safer than leaving the door open permanently.
Allow a short time for the change to apply. If your ISP assigns a new IP later (common with home internet), connections will start failing until you update the allowed IP again.
Get your connection details
You'll need four values, all separate from your portal or cPanel login:
- Host: your domain or the server's hostname, not
localhost(that only works for apps running on the server itself). - Port:
3306, the MySQL default. - Database name and username: whatever you set when creating the database, usually prefixed with your account username. See creating MySQL databases if you haven't created one yet.
- Password: the one set on the database user, not your portal or cPanel password.
If you're not sure what the host value should be for your account, ask support, since it can vary depending on how the server's hostname is configured.
Connect with a desktop client
In your MySQL client of choice, create a new connection and fill in the host, port, database, username, and password from above. Most clients (TablePlus, DBeaver, Sequel Ace, MySQL Workbench) have a "Test connection" button, use it before saving. If the test fails:
- Double-check the IP in Remote Database Access matches your current public IP exactly. A stale or wrong entry is the most common cause of a timeout.
- Confirm the database user has privileges granted on that specific database. A user with no privileges granted can authenticate but won't see any tables.
- Some networks (corporate VPNs, certain coffee shop wifi) block outbound port 3306 entirely. Try a different network to rule this out.
Once connected, you have full access to browse, edit, import, and export like you would in phpMyAdmin, just from your own machine's tools instead of a browser tab.
Connecting from a script or app
If you're connecting from code running somewhere other than your hosting (a local dev environment, a separate server, a CI pipeline), the same host, port, database, username, and password apply. Add that machine's IP to Remote Database Access the same way. If the IP isn't static, for example a CI runner with ephemeral IPs, a wildcard entry may be the only practical option; weigh that against the security tradeoff above, and consider rotating the database password on a schedule if you go that route.
For a persistent local development setup, an SSH connection with a tunnel is a more locked-down alternative to opening remote MySQL access at all: you connect over SSH and forward the local port to the server's 3306, so nothing needs to be exposed to the wider internet on the database side.
When to contact support
If you've confirmed the IP is correct, the user has privileges, and you still can't connect, open a ticket from the portal (Support → New ticket). It's worth mentioning the exact error message from your client and whether you're connecting from a script or a GUI tool, that narrows down whether it's a network-level block or a permissions issue on our end.