General Question

How to Upgrade MySQL in WHM: A Complete Step-by-Step Guide (2025)

How to upgrade MYSQL in WHM

I still remember the first time I needed to upgrade MySQL on a production server running WHM. My palms were sweaty, my heart was racing, and I must have backed up the databases three times before I finally worked up the courage to click that upgrade button. One wrong move, and I could potentially break dozens of client websites.

If you’re reading this, you’re probably in a similar situation—staring at an outdated MySQL version and wondering how to safely upgrade it without causing downtime or data loss. Maybe your application requ ires a newer MySQL version, or you’re seeing security vulnerabilities that need patching. Whatever the reason, I’ve got you covered.

In this guide, I’ll walk you through the entire process of upgrading MySQL in WHM (Web Host Manager), based on real-world experience managing multiple dedicated servers and VPS hosting environments.

Screenshot of WHM dashboard showing the current MySQL version in the server status section

Why Upgrade MySQL in the First Place?

Before we dive into the “how,” let’s talk about the “why” I’ve seen too many server administrators running ancient MySQL versions simply because “if it ain’t broke, don’t fix it.” But here’s the thing—that outdated version might be more broken than you think.

Security Vulnerabilities

Older MySQL versions contain known security flaws that hackers actively exploit. Last year, I inherited a server running MySQL 5.5 (yes, seriously), and a security scan revealed over 20 critical vulnerabilities. Upgrading to MySQL 8.0 immediately closed all those security holes.

Performance Improvements

MySQL 8.0 is significantly faster than MySQL 5.7, which is light-years ahead of MySQL 5.6. We’re talking about:

  • Up to 2x faster read/write operations
  • Better query optimization with improved indexing
  • More efficient memory usage (crucial for shared hosting environments)

When I upgraded one of our busiest servers from MySQL 5.7 to 8.0, average query response time dropped by 35%. That’s not a typo—thirty-five percent!

Application Compatibility

Modern web applications and CMSs often require newer MySQL versions:

  • WordPress 6.0+ recommends MySQL 8.0 for optimal performance
  • Magento 2.4+ requires MySQL 8.0
  • Laravel 10+ performs best with MySQL 8.0
  • Many SaaS applications now mandate MySQL 8.0+

If you’re running a web hosting business, staying current with MySQL versions is essential for client satisfaction.

New Features

MySQL 8.0 introduced game-changing features like:

  • Window functions for complex analytics queries
  • JSON improvements for modern web applications
  • Common Table Expressions (CTEs) for cleaner, more readable queries
  • Better UTF8 support (utf8mb4 by default)

Before You Start: Critical Pre-Upgrade Checklist

I learned these lessons the hard way, so you don’t have to. Before touching anything, complete this checklist:

1. Full Server Backup

This isn’t optional—it’s absolutely mandatory. I use multiple backup layers:

  • Complete cPanel backup (WHM > Backup > Backup Configuration)
  • Manual MySQL dump of all databases
  • Snapshot of the entire server (if using a VPS or cloud hosting)

Create a full MySQL backup using WHM:

bash

# SSH into your server and run:

mysqldump –all-databases –single-transaction –quick –lock-tables=false > full-backup-$(date +%F).sql

Store this backup somewhere safe—ideally off-server. I use both local storage and cloud backup services.

2. Check Current MySQL Version

Log into WHM and check your current version:

  • WHM HomeSQL ServicesMySQL/MariaDB Upgrade

Or via SSH:

bash

mysql –version

Document your current version. You’ll need this information if you need to roll back.

3. Review Application Compatibility

Here’s where things get tricky. Not all applications play nicely with newer MySQL versions. I once upgraded a server to MySQL 8.0 only to discover that a critical legacy application was hard-coded for MySQL 5.6 behaviors.

Check these before upgrading:

  • Review your clients’ application requirements
  • Test on a staging environment first (seriously, don’t skip this)
  • Check for deprecated features your applications might use
  • Review MySQL’s official upgrade documentation

4. Schedule Maintenance Window

Even with careful planning, expect some downtime. I typically schedule upgrades during low-traffic periods:

  • Weekends (2 AM – 6 AM for most businesses)
  • Wednesday evenings for mid-week maintenance
  • Avoid Mondays (too much can go wrong on a Monday)

Notify your clients or users at least 48 hours in advance. Trust me, surprising people with downtime is a fast way to lose customers.

Understanding MySQL vs MariaDB in WHM

Here’s something that confused me initially—WHM offers both MySQL and MariaDB upgrades. What’s the difference?

MySQL is the original database system owned by Oracle. MariaDB is a community-driven fork created by MySQL’s original developers. cPanel/WHM supports both, but they’ve been pushing MariaDB as the default since 2019.

Which Should You Choose?

Based on managing multiple hosting environments, here’s my take:

Choose MySQL if:

  • You need Oracle’s official support
  • Your applications specifically require MySQL
  • You’re using proprietary MySQL features

Choose MariaDB if:

  • You want open-source development
  • You need better performance (MariaDB often edges out MySQL in benchmarks)
  • You’re running a Linux hosting environment with other open-source tools

For most hosting scenarios, MariaDB is the better choice. It’s fully compatible with MySQL, often faster, and completely open-source.

Method 1: Upgrading MySQL Through WHM Interface (Recommended)

This is the safest and easiest method for most server administrators. WHM’s built-in upgrade tool handles most of the complexity.

Step 1: Access the MySQL Upgrade Interface

  1. Log into WHM as root.
  2. Navigate to SQL Services in the left sidebar.
  3. Click on MySQL/MariaDB Upgrade.

You’ll see your current MySQL/MariaDB version and available upgrade options.

Step 2: Review Upgrade Path

WHM will show you available upgrade paths. Here’s what you might see:

  • MySQL 5.7 → MySQL 8.0
  • MySQL 5.6 → MySQL 5.7 (intermediate upgrade)
  • MySQL 5.7 → MariaDB 10.6
  • MariaDB 10.3 → MariaDB 10.6 → MariaDB 10.11

Important: You usually can’t skip major versions. If you’re on MySQL 5.6, you’ll need to upgrade to 5.7 first, then to 8.0.

Step 3: Run Pre-Upgrade Check

Before upgrading, run WHM’s compatibility check:

  1. Click “Upgrade to [Version]”
  2. WHM will analyze your databases for compatibility issues
  3. Review any warnings or errors carefully

The pre-check looks for:

  • Deprecated features in your databases
  • Tables using obsolete storage engines
  • Potential data type conflicts
  • Application compatibility issues
Screenshot of the MySQL upgrade interface in WHM showing available versions and the upgrade button

Step 4: Start the Upgrade Process

If the pre-check passes:

  1. Click “Proceed with Upgrade”
  2. WHM will:
    • Stop MySQL service
    • Backup current MySQL installation
    • Install new MySQL version
    • Migrate databases
    • Upgrade system tables
    • Restart MySQL service

This process typically takes 10-30 minutes depending on:

  • Database size
  • Server resources
  • Number of databases

During my last upgrade on a server with 50GB of databases, the entire process took about 25 minutes.

Step 5: Post-Upgrade Verification

Once complete, verify everything worked:

bash

# Check MySQL version

mysql –version

# Log into MySQL

mysql -u root -p

# Inside MySQL, check databases

SHOW DATABASES;

# Exit MySQL

EXIT;

Test critical applications immediately:

  • Check WordPress sites
  • Test e-commerce checkouts
  • Verify custom application functionality
  • Monitor error logs: /var/log/mysql/error.log

Method 2: Upgrading MySQL via Command Line (Advanced)

If you prefer command-line control or WHM’s upgrade tool isn’t working, you can upgrade manually via SSH. This method gives you more control but requires more technical knowledge.

Prerequisites

Ensure you have:

  • Root SSH access
  • Screen or tmux installed (to prevent disconnection issues)
  • Full database backups completed

Step 1: Start a Screen Session

bash

# Start screen to prevent disconnection

screen -S mysql-upgrade

If you get disconnected, reconnect with:

bash

screen -r mysql-upgrade

Step 2: Backup Current MySQL Configuration

bash

cp /etc/my.cnf /etc/my.cnf.backup

cp -r /var/lib/mysql /var/lib/mysql.backup

Step 3: Stop MySQL Service

bash

systemctl stop mysql

# or

/scripts/restartsrv_mysql –stop

Step 4: Update MySQL/MariaDB Packages

For MySQL 8.0 on CentOS/AlmaLinux:

bash

yum remove mysql-community-server

yum install mysql-community-server-8.0

For MariaDB 10.11 on CentOS/AlmaLinux:

bash

yum remove MariaDB-server

yum install MariaDB-server-10.11

Step 5: Upgrade System Tables

bash

mysql_upgrade -u root -p

This command:

  • Checks all tables for compatibility
  • Upgrades system tables
  • Repairs any issues found

Step 6: Start MySQL Service

bash

systemctl start mysql

# or

/scripts/restartsrv_mysql

Step 7: Verify Upgrade

bash

mysql –version

mysql -u root -p -e “SELECT VERSION();”

Common Upgrade Issues and How I Fixed Them

Over the years, I’ve encountered virtually every MySQL upgrade problem imaginable. Here are the most common issues and their solutions:

Issue 1: “Table doesn’t exist” After Upgrade

This happened to me during an upgrade from MySQL 5.6 to 5.7. Some tables became corrupted during migration.

Solution:

bash

mysqlcheck -u root -p –auto-repair –all-databases

If that doesn’t work:

bash

# For each problematic database

mysqlcheck -u root -p –repair database_name

Issue 2: Authentication Plugin Errors

MySQL 8.0 changed the default authentication plugin from mysql_native_password to caching_sha2_password. Many applications don’t support the new method yet.

Solution: Edit /etc/my.cnf and add:

ini

[mysqld]

default_authentication_plugin=mysql_native_password

Then restart MySQL:

bash

systemctl restart mysql

For existing users:

sql

ALTER USER ‘username’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;

FLUSH PRIVILEGES;

Issue 3: Insufficient Memory During Upgrade

Large databases can exhaust server memory during upgrade, causing the process to fail.

Solution:

Temporarily increase swap space:

bash

# Create 4GB swap file

dd if=/dev/zero of=/swapfile bs=1M count=4096

chmod 600 /swapfile

mkswap /swapfile

swapon /swapfile

After upgrade, you can remove it:

bash

swapoff /swapfile

rm /swapfile

Issue 4: cPanel/WHM Services Won’t Start

Sometimes cPanel services fail to connect to MySQL after upgrade.

Solution:

bash

# Restart cPanel services

/scripts/restartsrv_cpsrvd

/scripts/restartsrv_cpanellogd

# Update cPanel MySQL configuration

/usr/local/cpanel/bin/update_db_mysql_unix_auth

Issue 5: WordPress Stuck in Maintenance Mode

If WordPress sites got stuck during upgrade:

Solution:

bash

# Remove maintenance mode file

cd /home/username/public_html

rm .maintenance

Troubleshooting flowchart showing decision tree for common upgrade issues

Post-Upgrade Optimization

Once your upgrade is complete and verified, don’t stop there. Optimize your new MySQL installation for better performance.

1. Optimize MySQL Configuration

MySQL 8.0 has different optimal settings than older versions. Here’s my production-tested /etc/my.cnf configuration for a server with 8GB RAM:

ini

[mysqld]

# Basic Settings

max_connections = 150

max_allowed_packet = 64M

thread_cache_size = 50

table_open_cache = 4000

# InnoDB Settings (for MySQL 8.0)

innodb_buffer_pool_size = 4G  # ~50% of total RAM

innodb_log_file_size = 512M

innodb_flush_log_at_trx_commit = 2

innodb_flush_method = O_DIRECT

# Query Cache (removed in MySQL 8.0, ignore if upgrading)

# Query cache deprecated

# Logging

slow_query_log = 1

slow_query_log_file = /var/log/mysql/slow-query.log

long_query_time = 2

After editing, restart MySQL:

bash

systemctl restart mysql

2. Update Database Statistics

Help MySQL’s query optimizer by updating table statistics:

bash

mysqlcheck -u root -p –analyze –all-databases

3. Monitor Performance

Install monitoring tools to track MySQL performance:

Using MySQLTuner:

bash

wget http://mysqltuner.pl/ -O mysqltuner.pl

perl mysqltuner.pl

“`

This script provides recommendations for optimizing your MySQL configuration based on actual usage patterns.

## Upgrading from MySQL 5.6 to 8.0 (Multi-Step Process)

You can’t directly upgrade from MySQL 5.6 to 8.0. You need to upgrade incrementally:

### The Upgrade Path:

**MySQL 5.6 → MySQL 5.7 → MySQL 8.0**

### Timeline and Planning:

**Week 1: Upgrade to MySQL 5.7**

1. Full backup

2. Upgrade to 5.7 using WHM

3. Test for one week

4. Monitor for issues

**Week 2-3: Stabilization**

1. Fix any compatibility issues

2. Optimize configuration

3. Ensure all applications work correctly

**Week 4: Upgrade to MySQL 8.0**

1. Another full backup

2. Upgrade to 8.0 using WHM

3. Post-upgrade testing

This might seem slow, but rushing through major version upgrades is asking for trouble. I learned this lesson after trying to rush an upgrade and spending 12 hours rolling back and troubleshooting.

**[Image Suggestion: Timeline diagram showing the multi-step upgrade process from MySQL 5.6 to 8.0]**

## Special Considerations for Shared Hosting Environments

If you’re running a [shared hosting environment](https://vmhoster.com/shared-hosting) with multiple clients, upgrading MySQL requires extra care.

### 1. Client Communication

Draft a notification email at least one week before:

“`

Subject: Scheduled MySQL Upgrade – Action Required

Dear Client,

We’re upgrading our MySQL database servers to version 8.0 on [DATE] 

to improve performance and security.

Scheduled Maintenance: [DATE] from 2:00 AM – 6:00 AM EST

Expected Impact:

– Brief website downtime (15-30 minutes)

– Improved database performance after upgrade

– Enhanced security

Action Required:

Please ensure your applications are compatible with MySQL 8.0.

Test in our staging environment: [STAGING_URL]

Questions? Reply to this email or open a support ticket.

Best regards,

[Your Hosting Company]

2. Staged Rollout

Don’t upgrade all servers at once:

Phase 1: Upgrade one test server with low-priority clients Phase 2: Monitor for 48 hours Phase 3: Upgrade 25% of production servers Phase 4: Monitor for one week Phase 5: Upgrade remaining servers

3. Rollback Plan

Always have a rollback plan:

  1. Keep MySQL 5.7 packages available
  2. Maintain database backups for at least 7 days post-upgrade
  3. Document rollback procedures
  4. Test rollback process on staging server

Monitoring MySQL Performance After Upgrade

After upgrading, monitor these key metrics:

Using WHM Built-in Tools:

WHM → Server Status → Service Status

  • Check MySQL uptime
  • Monitor connection count
  • Review error logs

WHM → SQL Services → Show MySQL Processes

  • Identify slow queries
  • Check for locked tables
  • Monitor resource usage

Using Command Line:

bash

# Check MySQL status

mysqladmin -u root -p status

# Monitor running queries

mysqladmin -u root -p processlist

# Check slow queries

tail -f /var/log/mysql/slow-query.log

Key Metrics to Watch:

  • Query response time: Should improve or stay the same
  • Connection errors: Should be near zero
  • Slow queries: Should decrease after upgrade
  • CPU usage: May initially spike, should stabilize
  • Memory usage: Monitor for memory leaks

If you notice performance degradation after upgrade, review your MySQL configuration. Sometimes the default settings need tuning for your specific workload.

 Screenshot of MySQL monitoring dashboard showing key performance metrics

When Things Go Wrong: Rolling Back MySQL

Despite careful planning, sometimes upgrades fail catastrophically. Here’s how to roll back:

Emergency Rollback Procedure:

Step 1: Stop MySQL

bash

systemctl stop mysql

Step 2: Restore MySQL Data Directory

bash

rm -rf /var/lib/mysql

cp -r /var/lib/mysql.backup /var/lib/mysql

chown -R mysql:mysql /var/lib/mysql

Step 3: Restore Configuration

bash

cp /etc/my.cnf.backup /etc/my.cnf

Step 4: Downgrade MySQL Package

bash

yum remove mysql-community-server

yum install mysql-community-server-5.7  # or your previous version

Step 5: Restore Database Backup

bash

mysql -u root -p < full-backup-[DATE].sql

Step 6: Start MySQL

bash

systemctl start mysql

Step 7: Verify

bash

mysql –version

mysql -u root -p -e “SHOW DATABASES;”

I’ve only had to perform a full rollback twice in my career, but both times I was incredibly grateful for those comprehensive backups.

MySQL vs MariaDB: Should You Switch?

Many hosting providers are migrating from MySQL to MariaDB. Here’s my perspective after managing both:

Advantages of MariaDB:

  • Better performance on most workloads
  • More storage engines (Aria, ColumnStore)
  • Active open-source development
  • Better thread pool management
  • Compatible with MySQL (mostly)

Advantages of MySQL:

  • Official Oracle support
  • Better enterprise tools
  • Newer features (MySQL 8.0 innovations)
  • Wider compatibility with proprietary tools

My Recommendation:

For shared hosting or VPS environments: MariaDB 10.11

  • Better resource efficiency
  • Excellent performance
  • Strong community support

For enterprise applications with Oracle dependencies: MySQL 8.0

  • Official support
  • Enterprise features
  • Better integration with Oracle ecosystem

For e-commerce or high-traffic sites: MariaDB 10.11

  • Proven performance at scale
  • Better connection handling
  • More flexible configuration

Frequently Asked Questions

How long does MySQL upgrade take?

Based on my experience:

  • Small server (< 10GB databases): 10-20 minutes
  • Medium server (10-50GB databases): 20-45 minutes
  • Large server (50-200GB databases): 45-90 minutes
  • Very large server (200GB+ databases): 90+ minutes

Will my websites go down during upgrade?

Yes, expect downtime. MySQL must be stopped during upgrade. However:

  • Static HTML sites continue working
  • Cached pages may serve during upgrade
  • Actual downtime is typically 10-30 minutes

Can I upgrade MySQL without WHM?

Yes, but WHM makes it significantly easier and safer. Manual upgrades require:

  • Advanced Linux knowledge
  • Understanding of MySQL internals
  • Careful manual configuration
  • More time and risk

Should I upgrade to MySQL 8.0 or MariaDB 10.11?

For most scenarios, I recommend MariaDB 10.11:

  • Better performance
  • More features
  • Active development
  • Open-source

Choose MySQL 8.0 only if:

  • You need Oracle support
  • Applications specifically require MySQL
  • You use MySQL-exclusive features

What happens to my databases during upgrade?

WHM’s upgrade process:

  1. Stops MySQL service
  2. Backs up data directory
  3. Installs new version
  4. Migrates databases to new format
  5. Upgrades system tables
  6. Restarts MySQL

Your data remains intact, but table formats are upgraded to work with the new version.

Can I test the upgrade first?

Absolutely! And you should:

  1. Create a staging server (or use WHM staging features)
  2. Clone production databases to staging
  3. Perform upgrade on staging
  4. Test thoroughly for 48+ hours
  5. Only then upgrade production

Testing caught issues for me on multiple occasions that would have caused serious production problems.

Comparison chart showing MySQL vs MariaDB features and performance metrics

Best Practices for Future MySQL Maintenance

After successfully upgrading, implement these practices:

1. Regular Updates

Don’t wait years between upgrades:

  • Minor updates: Apply monthly
  • Major updates: Plan annually
  • Security patches: Apply immediately

2. Automated Backups

Configure automated daily backups:

bash

# Add to cron (via WHM > Backup Configuration)

/usr/local/cpanel/bin/backup –daily

3. Performance Monitoring

Set up continuous monitoring:

  • Install New Relic or Datadog
  • Configure email alerts for MySQL issues
  • Review slow query logs weekly

4. Documentation

Maintain documentation:

  • Current MySQL version
  • Configuration changes
  • Custom optimizations
  • Known issues and solutions

5. Professional Support

Consider professional managed hosting if:

  • You manage multiple servers
  • Downtime is costly
  • You lack in-house expertise
  • You need 24/7 support

Conclusion: Upgrading MySQL Doesn’t Have to Be Scary

Looking back at my first MySQL upgrade, I realize I was overthinking it. Yes, database upgrades require care and planning, but WHM’s tools make the process relatively straightforward.

The key takeaways:

Always backup everything before starting ✅ Test on staging before touching production ✅ Schedule during low-traffic periodsMonitor closely after upgrade ✅ Have a rollback plan ready

Following these principles, I’ve successfully upgraded dozens of servers without significant issues. The performance and security improvements are absolutely worth the effort.

If you’re running an older MySQL version, don’t wait. Security vulnerabilities and performance limitations are costing you more than the temporary inconvenience of upgrading.

Need help with MySQL upgrades or looking for reliable hosting infrastructure that keeps databases current? Feel free to reach out—I’m always happy to help fellow server administrators avoid the headaches I’ve experienced!

Helpful External Resources:


Have you upgraded MySQL in WHM recently? What challenges did you face? Share your experience in the comments below—your insights might help other server administrators!

This guide was last updated in October 2025 and reflects current best practices for WHM/cPanel environments running CentOS, AlmaLinux, and Rocky Linux.

Related Post

Team vmhoster