Back to Blog
Framework Cms Specific 15 min read

TL;DR - On shared hosting, cPanel gives you phpMyAdmin for free. Move to a VPS, cloud host, or managed WordPress platform and you lose that access. - There are 5 practical methods for WordPress database management without cPanel: WP-CLI, self-hosted phpMyAdmin, self-hosted Adminer, desktop GUIs, and hosted browser-based tools. - WP-CLI is the most powerful option but requires SSH and comfort with the command line. - Self-hosting phpMyAdmin or Adminer works but creates a security surface you have to maintain. - Desktop GUIs (TablePlus, DBeaver, MySQL Workbench) are solid but require local installation and SSH tunnel configuration. - A hosted tool like DBEverywhere gives you phpMyAdmin in the browser with zero setup, a static IP for firewall whitelisting, and no server to maintain. - Common WordPress database tasks — password resets, URL migration, spam cleanup — are included below with ready-to-use SQL queries.

Table of Contents

WordPress Database Management Without cPanel (5 Methods)

There are over 800 million websites running WordPress, and a growing share of them live outside traditional shared hosting. If you've moved your WordPress site to a VPS, a cloud provider like DigitalOcean or AWS, or a managed platform like Cloudways or RunCloud, you've probably noticed something missing: cPanel and the phpMyAdmin instance that came with it. WordPress database management without cPanel is a real problem for site owners and developers who need to run queries, fix broken migrations, or reset a locked-out admin password.

This guide covers 5 methods that replace cPanel's database access, with honest pros and cons for each. Whether you're a developer comfortable with SSH or a site owner who wants a visual interface, one of these will fit your workflow.

Why Leaving Shared Hosting Means Losing phpMyAdmin

On shared hosting providers like Bluehost, SiteGround, or Hostinger, cPanel bundles phpMyAdmin automatically. You click a button, you're in your database. No setup, no credentials to manage separately, no firewall rules to configure.

When you outgrow shared hosting — and roughly 40% of WordPress sites now run on self-managed infrastructure — that convenience disappears. You get a bare VPS or a managed database endpoint, and it's on you to figure out how to access it.

This matters because WordPress stores everything in its MySQL database: posts, pages, user accounts, plugin settings, theme options, WooCommerce orders, site URLs, and serialized configuration data. When something breaks — a failed migration, a locked admin account, a corrupted option value — you need direct database access to fix it. The WordPress admin dashboard can't help you if the database is the thing that's broken.

Here are the 5 methods that actually work.

Method 1: WP-CLI (Command Line)

WP-CLI is the official command-line tool for WordPress. It lets you interact with your WordPress installation — including the database — entirely from the terminal. If you have SSH access to your server, WP-CLI is already the most powerful WordPress database tool available.

Setup

WP-CLI comes pre-installed on most managed WordPress hosts. On a VPS, install it in under a minute:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

Verify it works:

wp --info

What You Can Do

WP-CLI can handle the majority of WordPress database tasks without touching SQL directly:

# Search and replace URLs after migration
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --dry-run

# Export the database
wp db export backup.sql

# Import a database dump
wp db import backup.sql

# Run a raw SQL query
wp db query "SELECT user_login, user_email FROM wp_users WHERE ID = 1;"

# Optimize all tables
wp db optimize

# Reset a user's password
wp user update 1 --user_pass="new-secure-password"

# Delete all spam comments
wp comment delete $(wp comment list --status=spam --format=ids)

# List all options matching a pattern
wp option list --search="siteurl"

Pros

  • Most powerful WordPress-specific database tool
  • Handles serialized data correctly during search-replace (phpMyAdmin doesn't)
  • No additional security surface — runs locally over SSH
  • Scriptable and automatable

Cons

  • Requires SSH access to the server
  • No visual interface — you need to know the commands
  • Not practical for browsing table structures or exploring unfamiliar data
  • Cannot connect to remote databases without additional configuration

Best for: Developers with SSH access who prefer working in the terminal and need reliable search-replace operations.

Method 2: Self-Hosted phpMyAdmin

Installing phpMyAdmin directly on your VPS gives you the same visual interface you had on shared hosting. It's the most common WordPress phpMyAdmin alternative to cPanel — you're just running phpMyAdmin yourself instead of letting cPanel do it.

Setup

On Ubuntu/Debian:

sudo apt update
sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl

If you're running Nginx instead of Apache, you'll need to configure a server block pointing to /usr/share/phpmyadmin and ensure PHP-FPM is set up correctly.

For Docker:

docker run -d \
  --name phpmyadmin \
  -e PMA_HOST=your-db-host \
  -p 8080:80 \
  phpmyadmin/phpmyadmin

Security Considerations

This is where self-hosting gets complicated. phpMyAdmin exposed to the internet is one of the most targeted applications on the web. CVE Details lists over 40 vulnerabilities for phpMyAdmin since 2010, including SQL injection, cross-site scripting, and authentication bypasses.

If you self-host, you must:

  • Restrict access by IP in your web server config or firewall
  • Use HTTPS — phpMyAdmin transmits database passwords in the clear without TLS
  • Keep phpMyAdmin updated — the security advisories page shows multiple critical patches per year
  • Change the default URL — bots scan for /phpmyadmin constantly
  • Set a strong blowfish secret in config.inc.php

Pros

  • Full-featured visual database GUI
  • The same interface you're already familiar with from shared hosting
  • Free and open source
  • Handles imports/exports up to your PHP upload limit

Cons

  • Significant security surface when exposed to the internet
  • Requires web server (Apache/Nginx) + PHP + ongoing maintenance
  • You are responsible for patching and updates
  • Docker setup still requires networking/firewall configuration for remote databases

Best for: Developers who already maintain a VPS and are comfortable with server security hardening.

Self-hosted vs. hosted phpMyAdmin — a detailed comparison ->

Method 3: Self-Hosted Adminer

Adminer is a single-file PHP database management tool. It's the lightweight alternative to phpMyAdmin — the entire application is one PHP file under 500 KB.

Setup

Adminer's setup is as simple as it gets:

# Download to your web root
wget https://github.com/vrana/adminer/releases/download/v4.8.1/adminer-4.8.1.php -O /var/www/html/adminer.php

Navigate to https://your-server.com/adminer.php and log in with your database credentials.

What Makes It Different From phpMyAdmin

Adminer supports more database engines than phpMyAdmin. While phpMyAdmin is MySQL/MariaDB only, Adminer works with MySQL, PostgreSQL, SQLite, MS SQL, Oracle, and MongoDB (via a plugin). For WordPress specifically, this doesn't matter — WordPress uses MySQL — but if you manage non-WordPress databases alongside your WordPress site, Adminer covers more ground.

The interface is cleaner and faster than phpMyAdmin, though it has fewer features. You won't find phpMyAdmin's visual query builder, and import/export options are more limited.

Security Considerations

The same risks that apply to self-hosted phpMyAdmin apply to Adminer. A single PHP file exposed to the internet with database login capabilities is a target. In 2021, researchers found Adminer files exposed on over 12,000 websites — many of them forgotten by the developers who uploaded them.

You need the same protections: IP restriction, HTTPS, and ideally HTTP basic authentication in front of the login page.

Pros

  • Single file — dead simple to deploy and remove
  • Supports multiple database engines
  • Faster and lighter than phpMyAdmin
  • No dependencies beyond PHP

Cons

  • Same security risks as self-hosted phpMyAdmin
  • Fewer features (no query builder, simpler import/export)
  • Easy to forget about after deploying — becomes an unpatched backdoor
  • Requires PHP on the server

Best for: Quick, one-off database access when you need something fast and plan to delete it afterward.

phpMyAdmin vs. Adminer — which to choose ->

Method 4: Desktop Database GUI

Desktop applications like MySQL Workbench, DBeaver, and TablePlus connect directly from your computer to your database server. They're the WordPress database GUI option that doesn't involve a web browser at all.

Popular Options

Tool Price Platforms Notable Feature
MySQL Workbench Free Windows, macOS, Linux Official MySQL tool, visual schema designer
DBeaver Free (Community) Windows, macOS, Linux Supports 80+ database engines
TablePlus $89 (one-time) macOS, Windows, Linux Clean UI, fast performance
Sequel Ace Free macOS only Successor to Sequel Pro
HeidiSQL Free Windows Lightweight, fast

SSH Tunnel Configuration

Most managed databases (DigitalOcean Managed Databases, AWS RDS in a VPC, Google Cloud SQL) are not directly accessible from the public internet. You need an SSH tunnel through a bastion host or your VPS.

In TablePlus or DBeaver, this means configuring: - SSH Host: your VPS IP or bastion host - SSH User: your server user (e.g., root or deploy) - SSH Key: path to your private key file - MySQL Host: your database's private hostname (e.g., db-mysql-nyc3-12345-do-user.db.ondigitalocean.com) - MySQL Port: 25060 (or whatever your provider uses)

This works well once configured, but it's per-machine. Set it up on your work laptop, and you'll need to do it again on your personal machine, and again if you get a new computer.

Firewall and IP Whitelisting

Desktop GUIs connect from your local IP address. If your database requires IP whitelisting (most managed databases do), you need to add your current IP to the allowlist. This is fine if you work from one location. It becomes tedious when:

  • You work from home and a coffee shop (different IPs)
  • Your ISP assigns dynamic IPs
  • Multiple team members need access from different locations
  • You travel

Each IP change means updating your database firewall rules.

Pros

  • Rich visual interface with schema visualization
  • Direct connection — no intermediary server
  • Query autocompletion and syntax highlighting
  • Saved connections persist locally

Cons

  • Requires installation on every machine you use
  • SSH tunnel setup per machine, per database
  • Dynamic IPs make firewall whitelisting painful
  • Not accessible from devices where you can't install software (tablets, borrowed laptops, locked-down corporate machines)

Best for: Developers who work primarily from one machine and want the richest GUI experience.

Method 5: Hosted Browser-Based Tool

A hosted WordPress database tool runs phpMyAdmin or Adminer for you in the cloud — you access it through your browser without installing or maintaining anything. This is the approach DBEverywhere takes.

How It Works

  1. Open dbeverywhere.com in any browser and sign in with a magic link.
  2. Enter your WordPress database credentials: the MySQL host, port, username, and password from your wp-config.php.
  3. Click Connect. You get a full phpMyAdmin session scoped to your database. Browse wp_posts, run queries on wp_options, export wp_users — everything you'd do in cPanel's phpMyAdmin.
  4. Close the tab when you're done. Credentials are not stored unless you explicitly choose to save the connection (paid tier, AES-256-GCM encrypted).

The Static IP Advantage

DBEverywhere connects to your database from a single, published static IP address. You add this IP to your database firewall once, and every future session — from any browser, any device, any location — connects through that same address.

This solves the biggest pain point of both desktop GUIs and self-hosted tools: you never have to update your firewall rules when your IP changes. For teams, it means one IP in the allowlist instead of one per developer per location.

How to whitelist a static IP on DigitalOcean, AWS, and Google Cloud ->

SSH Tunnels for Private Databases

If your WordPress database is in a private subnet (common with AWS RDS or DigitalOcean VPCs), DBEverywhere's paid tier supports SSH tunnels. You provide the bastion host details and SSH key, and the tunnel is established server-side. No local SSH client, no port forwarding commands to remember.

Free and Paid Tiers

  • Free: 5 sessions per month, 20-minute session timeout. Enough for occasional maintenance.
  • Paid ($5/mo): Unlimited sessions, 8-hour timeouts, saved connections with encrypted credential storage, SSH tunnel support.

Pros

  • Zero setup — works from any browser on any device
  • Static IP eliminates firewall whitelisting headaches
  • No server to maintain, no software to install
  • phpMyAdmin and Adminer available (covers MySQL, PostgreSQL, SQLite, and more)
  • Built-in SSH tunnel support (paid tier)

Cons

  • Database credentials transit through a third-party gateway
  • Free tier limited to 5 sessions/month
  • Stock phpMyAdmin/Adminer — no deep customization
  • Requires internet access

Best for: Developers and site owners who want the simplicity of cPanel's phpMyAdmin without the shared hosting. Especially useful if you manage WordPress databases across multiple providers or work from multiple devices.

Common WordPress Database Tasks With SQL Examples

Whatever method you choose, here are the SQL queries you'll actually need. WordPress uses a predictable table structure (default prefix wp_), and these tasks come up constantly.

Reset an Admin Password

Locked out of wp-admin? Reset the password directly in the database. WordPress uses phpass hashing, but it also accepts plain MD5 — WordPress will rehash it on next login:

UPDATE wp_users
SET user_pass = MD5('your-new-password')
WHERE user_login = 'admin';

With WP-CLI:

wp user update admin --user_pass="your-new-password"

Update Site URL After Migration

The most common database task after moving a WordPress site to a new domain or switching from HTTP to HTTPS:

UPDATE wp_options SET option_value = 'https://new-domain.com' WHERE option_name = 'siteurl';
UPDATE wp_options SET option_value = 'https://new-domain.com' WHERE option_name = 'home';

Warning: This only updates the wp_options table. URLs are also hardcoded in wp_posts.post_content, wp_posts.guid, and wp_postmeta.meta_value — often in serialized data. For a full migration, use WP-CLI's search-replace, which handles serialized strings correctly:

wp search-replace 'https://old-domain.com' 'https://new-domain.com' --all-tables

Delete All Spam Comments

WordPress sites accumulate spam comments even with Akismet. Clean them out:

DELETE FROM wp_comments WHERE comment_approved = 'spam';

To also remove orphaned comment metadata:

DELETE FROM wp_commentmeta
WHERE comment_id NOT IN (SELECT comment_ID FROM wp_comments);

Delete All Post Revisions

WordPress stores every revision of every post by default. On a content-heavy site, wp_posts can have 10x more revisions than actual posts. Approximately 25% of a typical WordPress database is post revisions:

DELETE FROM wp_posts WHERE post_type = 'revision';

Clean up orphaned postmeta:

DELETE FROM wp_postmeta
WHERE post_id NOT IN (SELECT ID FROM wp_posts);

Disable All Plugins (Emergency Recovery)

If a plugin breaks your site and you can't access wp-admin:

UPDATE wp_options
SET option_value = 'a:0:{}'
WHERE option_name = 'active_plugins';

This deactivates all plugins by setting the serialized array to empty. You can then log in and reactivate plugins one at a time to find the culprit.

Find and Update a Specific Option

WordPress plugins store settings in wp_options. To find a plugin's settings:

SELECT option_name, option_value
FROM wp_options
WHERE option_name LIKE '%plugin_name%';

Optimize All Tables

Over time, WordPress database tables accumulate overhead from deletions, updates, and fragmentation:

OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments, wp_commentmeta;

With WP-CLI:

wp db optimize

Comparison: All 5 Methods Side by Side

Feature WP-CLI Self-Hosted phpMyAdmin Self-Hosted Adminer Desktop GUI Hosted (DBEverywhere)
Setup time 1-2 min 15-30 min 2 min 5-10 min per machine ~30 seconds
Visual interface No Yes Yes Yes Yes
Requires SSH access Yes No (but needs a server) No (but needs a server) For tunnel setup No
Requires server Yes Yes Yes No No
Requires local install No (server-side) No (server-side) No (server-side) Yes No
Works from any device No Yes (if exposed) Yes (if exposed) No Yes
Security maintenance None High High None None
Static IP for whitelisting N/A Your VPS IP Your VPS IP Your IP (dynamic) Yes (published, fixed)
SSH tunnel support N/A Manual config Manual config Built-in Built-in (paid)
Serialized data handling Yes (search-replace) No No No No
Multi-engine support WordPress only MySQL only MySQL, PostgreSQL, SQLite, etc. Varies by tool MySQL + Adminer engines
Cost Free Free + server cost Free + server cost Free-$89 Free tier / $5/mo

The bottom line: No single method is best for every situation. WP-CLI wins for scripted operations and serialized data. Desktop GUIs win for deep exploration on a single workstation. A hosted browser tool wins for convenience and multi-device access. Self-hosting wins when you already have the infrastructure and don't mind maintaining it.

For most WordPress developers managing databases on VPS or cloud hosting, the practical combination is WP-CLI for routine operations + a browser-based tool for visual exploration and emergency access.


Want phpMyAdmin access to your WordPress database without the server maintenance? Try DBEverywhere free — 5 sessions per month, no credit card, 30-second setup.


FAQ

Can I manage my WordPress database without cPanel?

Yes. cPanel is just one way to access phpMyAdmin — it's not the only way to manage a WordPress database. You can use WP-CLI from the command line, install phpMyAdmin or Adminer on your own server, use a desktop GUI like TablePlus or DBeaver, or use a hosted browser-based tool like DBEverywhere. All five methods give you full access to your WordPress MySQL database for queries, imports, exports, and table management.

What's the easiest way to access my WordPress database on a VPS?

The fastest path depends on your comfort level. If you're comfortable with the command line, WP-CLI is already on most WordPress servers and requires zero additional setup. If you want a visual interface without installing anything, a hosted tool like DBEverywhere gets you into phpMyAdmin in about 30 seconds. If you want a rich desktop experience and don't mind a one-time setup, TablePlus or DBeaver are excellent options.

How do I find my WordPress database credentials?

Your WordPress database credentials are in your wp-config.php file, located in your WordPress root directory. Look for these four lines:

define('DB_NAME', 'your_database_name');
define('DB_USER', 'your_database_user');
define('DB_PASSWORD', 'your_database_password');
define('DB_HOST', 'your_database_host');

On shared hosting, DB_HOST is usually localhost. On managed databases (DigitalOcean, AWS RDS), it's a hostname like db-mysql-nyc3-xxxxx.db.ondigitalocean.com with a non-standard port.

Is it safe to run SQL queries directly on my WordPress database?

Direct SQL queries are safe as long as you know what you're doing and always take a backup first. The biggest risk is modifying serialized data — WordPress stores many settings as PHP serialized strings that include string length counts. If you change a URL inside serialized data with a plain UPDATE statement, the length count will be wrong and WordPress will fail to unserialize it. Use WP-CLI's search-replace command for any operation that touches serialized data.

Can I use phpMyAdmin with WordPress on DigitalOcean or AWS?

Yes, but not through cPanel (DigitalOcean and AWS don't use cPanel). You can self-host phpMyAdmin on your VPS, use a desktop GUI with an SSH tunnel, or use a hosted service like DBEverywhere that provides phpMyAdmin through the browser. With managed databases on these platforms, you'll need to whitelist the connecting IP address — DBEverywhere's static IP makes this straightforward.

Conclusion

Millions of WordPress sites run on infrastructure where WordPress database management without cPanel is the default reality — VPS providers, cloud platforms, containerized deployments, and managed WordPress hosts that don't bundle phpMyAdmin. The database access you took for granted on shared hosting requires a deliberate replacement.

The five methods covered here — WP-CLI, self-hosted phpMyAdmin, self-hosted Adminer, desktop GUIs, and hosted browser-based tools — each solve the problem differently. WP-CLI is unmatched for scripted and serialized-data-aware operations. Self-hosting gives you full control at the cost of maintenance. Desktop GUIs offer the richest interface on a single machine. And hosted tools like DBEverywhere give you the cPanel-like convenience of phpMyAdmin in a browser, without the cPanel.

Pick the method that matches how you work. Or pick two — they're not mutually exclusive.

Try DBEverywhere free -> — browser-based phpMyAdmin for your WordPress database. 5 sessions/month, no credit card required.

Try DBEverywhere Free

Access your database from any browser. No installation, no Docker, no SSH tunnels.

Get Started