Introduction
This guide shows you how to manually upgrade phpMyAdmin on most major Linux distributions (e.g., Ubuntu, Debian, CentOS, Fedora). While tested on Ubuntu 24.04 running PHP 8, the steps are similar on other distros—just be sure to adjust file paths and package-manager commands if needed. If you have any issues, let me know in the comments.
Alternative Upgrade Methods (Package Managers, Control Panels, Docker)
While this guide focuses on manually upgrading phpMyAdmin by downloading the source files, you may not need these steps if:
- Package Managers (e.g., apt, yum, dnf, brew): If you installed phpMyAdmin with
apt-get
(Debian/Ubuntu) oryum
/dnf
(CentOS/Fedora), simply run:sudo apt-get update && sudo apt-get upgrade phpmyadmin
or
sudo yum update phpMyAdmin
(CentOS/Fedora).
Note that some distributions may lag behind the latest release. - Hosting Control Panels (e.g., cPanel, Plesk): In many shared hosting environments, phpMyAdmin is updated automatically through the control panel, so manual upgrades might break existing integrations.
- Docker/Container Environments: If you are running phpMyAdmin as a container, you can pull the latest Docker image (
docker pull phpmyadmin
) and recreate your container instead of manually downloading tarballs.
If you still prefer or need the latest release straight from source (for instance, your package repositories are outdated), then the steps below are the correct way to manually upgrade your phpMyAdmin installation.
1. Back Up phpMyAdmin
If you followed this guide before, make sure to delete any previous backup directory you created.
sudo rm -rf /usr/share/phpmyadmin.bak
Next, back up your current phpMyAdmin folder by renaming it:
sudo mv /usr/share/phpmyadmin/ /usr/share/phpmyadmin.bak
Create a new phpMyAdmin folder (adjust this path if your distro or setup uses a different location, such as /var/www/html/phpmyadmin
):
sudo mkdir /usr/share/phpmyadmin/
Then change directory:
cd /usr/share/phpmyadmin/
2. Download and Extract phpMyAdmin
phpMyAdmin 5.2.2 (released Jan 2025) requires PHP 7.2 or newer and MySQL/MariaDB 5.5 or newer. To find your PHP version via the command line, run php -v
. If you need to upgrade PHP, check out this guide: How to Upgrade from PHP 7.x to PHP 8 on Ubuntu.
- For PHP 7.2 or newer, download phpMyAdmin 5.2.2.
- For PHP 7.1, download phpMyAdmin 5.1.4.
- For PHP 5.5 to PHP 7.4, download phpMyAdmin-4.9.11.
Visit the phpMyAdmin download page and locate the .tar.gz URL. In this guide, we’re using version 5.2.2 (released Jan 2025). If a later version is available, be sure to change the commands accordingly (and let me know in the comments so I can update the guide!).
Download phpMyAdmin (Note: you can also verify checksums from the official site or use GPG signatures to ensure file integrity):
sudo wget https://files.phpmyadmin.net/phpMyAdmin/5.2.2/phpMyAdmin-5.2.2-all-languages.tar.gz
Extract the archive:
sudo tar xzf phpMyAdmin-5.2.2-all-languages.tar.gz
Once extracted, list the folder contents:
ls
You should see a folder named phpMyAdmin-5.2.2-all-languages
. Move its contents to /usr/share/phpmyadmin
(or /var/www/html/phpmyadmin
, if that’s where your existing install is):
sudo mv phpMyAdmin-5.2.2-all-languages/* /usr/share/phpmyadmin
Log into phpMyAdmin to confirm the upgrade. You may see two errors:

3. Fixing Common phpMyAdmin Errors
3.1. “The configuration file needs a valid key for cookie encryption” error
You may see the error The configuration file needs a valid key for cookie encryption. A temporary key was automatically generated for you. Please refer to the documentation.
This means you should create a unique key for your phpMyAdmin install. phpMyAdmin first loads /usr/share/phpmyadmin/libraries/config.default.php
and then overrides those values with anything found in /usr/share/phpmyadmin/config.inc.php
. If you had custom settings before, make sure to merge them into your new config file instead of starting completely over.
Create config.inc.php
(again, adjust directory paths if you placed phpMyAdmin elsewhere):
sudo nano /usr/share/phpmyadmin/config.inc.php
Generate your own 32-character blowfish secret (e.g., using this generator) and paste it into config.inc.php
:
<?php
// Use here a value of your choice 32 chars long
$cfg['blowfish_secret'] = 'PASTE__32__CHAR__BLOWFISH_SECRET';
$i=0;
$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
Save and exit (press CTRL
+ X
, press Y
, then press ENTER
)
Log out and back in to phpMyAdmin to confirm the error is gone.
3.2. “$cfg[‘TempDir’] (/usr/share/phpmyadmin/tmp/) is not accessible” error
If you see The $cfg[‘TempDir’] (/usr/share/phpmyadmin/tmp/) is not accessible. phpMyAdmin is not able to cache templates and will be slow because of this.
You need to create this directory and make it writable:
sudo mkdir /usr/share/phpmyadmin/tmp
sudo chown -R www-data:www-data /usr/share/phpmyadmin/tmp
sudo chmod 750 /usr/share/phpmyadmin/tmp
Again, log out and log back in to confirm the error is resolved.
4. Clean Up
You can now delete the tar.gz file and the empty folder:
sudo rm /usr/share/phpmyadmin/phpMyAdmin-5.2.2-all-languages.tar.gz
sudo rm -rf /usr/share/phpmyadmin/phpMyAdmin-5.2.2-all-languages
If you’re certain your new phpMyAdmin install is working correctly, you can delete the backup folder as well:
sudo rm -rf /usr/share/phpmyadmin.bak
That’s all! Enjoy your updated phpMyAdmin installation.
Let me know if this helped. Follow me on Twitter, Facebook and YouTube, or 🍊 buy me a smoothie.
Perfect, worked flawlessly, thanks.
Thanks. Worked without any error message.
Thank You! This article resolve my problem!
Excellent! A great help! Thx!
Very thorough tutorial with a successful outcome for me. BOOKMARKED!
Thanks very much all working fine now.
Thank you ! Excellent tuto :o)
Thank you, i really appreciate your tutorial. The errors have been bugging me for a while, now all is fixed. Best regards and keep up the good work.
Within the created DIR
"/usr/share/phpmyadmin"
is a file calles “config.sample.inc.php”.Open it, add a 32char alphanumeric string as value of “cfg[blowfish_secret]” and safe it as “config.inc.php”.
While in the editing of
"/usr/share/phpmyadmin/libraries/vendor_config.php"
DO NOT replace
"define('CONFIG_DIR', '');"
by"define('CONFIG_DIR', '/etc/phpmyadmin/');"
.Instead take the path to the just altered “config.inc.php”. Take care, (maybe) because of the updating-process, there are minimum 2 other “config.inc.php” on your system under
1) “/var/lib/phpmyadmin” (is empty)
2) “/etc/phpmyadmin/” which will load the “blowfish”-file from “/var/lib/phpmyadmin”.
In my case it was just possible to satisfy the error-message when pointing to “/usr/share/phpmyadmin/config.inc.php” with filled “blowfish_secret” as “CONFIG_DIR”.
Finally, thank you very much for this guide.
Why not just set
define('CONFIG_DIR', '/etc/phpmyadmin/');
?This gets rid of the blowfish error.
Hello,
It was working till yesterday, Now i cant find config.inc.php and setting up blowfish_secret in this blog
There is an easier method to get rid of that error. Open
/usr/share/phpmyadmin/libraries/vendor_config.php
, search forCONFIG_DIR
and change it to:define('CONFIG_DIR', '/etc/phpmyadmin/');
A quicker fix for the blowfish_secret :
sudo nano /usr/share/phpmyadmin/libraries/vendor_config.php
Press CTRL + W and search for CONFIG_DIR
Change line to:
define(‘CONFIG_DIR’, ‘/etc/phpmyadmin/’);
Thanks for the tip, Dimitar. Post updated.
Thank you for this article, very clear.
Wonderful straight forward, easy to follow write up. Very well done. And most importantly, thank you for posting this tip to fix this issue for Ubuntu 18.04 users! (Not that it matters as it’s the same Ubuntu as in pure Linux, but implemented this fix in Windows Subsystem for Linux – Ubuntu 18.04)
Many thanks for the kind words.
🙂
sir im new to this why is it after following this steps my localhost/phpmyadmin/ is blank page now?
All I can recommend is that you restore your backup.
sudo mv /usr/share/phpmyadmin/ /usr/share/phpmyadmin.del
sudo mv /usr/share/phpmyadmin.bak/ /usr/share/phpmyadmin
Check that phpMyAdmin is working again.
Perfect tutorial many thx
Glad it helped 🙂
thank u so much
You’re welcome!
Thank you!
Works like a charm 🙂
🙂👍
Thanks!
👍
Thank you
No probs!
works Fine For Me 😀
👍
Thank you very much for this accurate tutorial. Everything works fine.
Have a nice day.
Glad it helped 🙂
Yo realice todos los pasos pero me dejo un warning que dice
El archivo de configuración ahora necesita una frase secreta (blowfish_secret).
Buscando como arreglaro, edite el archivo config.default.php y en la linea $cfg[‘blowfish_secret’]=’ColocarValorAleatorio’
QUEDANDO DE ESTA FORMA
$cfg[‘blowfish_secret’] = ‘a0sfo49nadf89fa3s8f789sf78asb7p1587balz’
segun esto se tiene que colocar un valor aleatorio, no se si sea correcto esto, sin embargo a mi me funciono.
NOTA: para buscar la ubicacion del archivo
sudo find / -name config.default.php
Gracias por la respuesta.
Sort out my issue. God bless you.
👍
Thanks for the tutorial, it helped me a lot.
🙂
Thanks, nice tutorial! It’s works.
Great!
in my vps server, i havenot found phpmyadmin in usr/share path..could anyone please help