How to Install the Latest phpMyAdmin on Ubuntu 20.04

Install the Latest phpMyAdmin

This tutorial will guide you in your quest to install the latest phpMyAdmin on your Ubuntu system.

phpMyadmin is probably the best freely available web-based MySQL and MariaDB administration application. You can download and install on your server running PHP and a server like Apache, Nginx, or IIS among others.

Prerequisites

We are assuming you already have installed the MySQL server on your Ubuntu system. In this case, we will be using Ubuntu 20.04. We will also assume you have Apache, PHP, and a non-root user with sudo privileges, as well as a firewall configured with ufw. This tutorial about the LAMP stack will help you install the necessary prerequisites.

We will also recommend you have an existing domain configured with an SSL/TLS certificate. This is because phpMyAdmin communicates directly with your MySQL installation, uses MySQL credentials to authenticate as well as create users, databases, and their objects, as well as executes and returns results for SQL queries.

If you have the above in place you are ready to proceed.

Default Step (Optional) — Installing phpMyAdmin

PhpMyAdmin can be installed from the default Ubuntu repositories. This will not install the latest available phpMyAdmin version. The steps to install the latest phpMyAdmin will be highlighted later in this tutorial.

The process involves updating your server’s package index and then using apt install them on your Ubuntu system. Use the following commands:

$ sudo apt update
$ sudo apt install phpmyadmin php-mbstring php-gettext

php-mbstring and php-gettext extensions will only be installed if they are not already installed.

Follow the prompts in order to configure your installation correctly with the following hints:

  • For the server selection, choose apache2
  • Select Yes when asked whether to use dbconfig-common to set up the database
  • Choose and confirm a MySQL application password for phpMyAdmin.

The phpMyAdmin Apache configuration file will be added to the /etc/apache2/conf-enabled/ directory.

You may need to explicitly enable the mbstring PHP extension if it has not been previously enabled. This can be done by running the following command:

Read Also  More Computing Sins

$ sudo phpenmod mbstring

Restart Apache for your changes to be saved:

$ sudo systemctl restart apache2

phpMyAdmin is now installed and configured. Be sure to make sure MySQL users have the privileges required.

Step 1: Install the Latest phpMyAdmin on Ubuntu 20.04

let’s take a diversion to install the latest phpMyAdmin on your Ubuntu system seeing the above procedure does not give us the latest version.

Download the latest phpMyAdmin archive from the official download page here. Also, visit the page to determine the latest version which is currently phpMyAdmin 5.0.2 at the initial publishing of this tutorial.

Use the following commands to download phpMyAdmin 5.0.2 onto your system.

$ wget https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.zip
$ unzip phpMyAdmin-5.0.2-all-languages.zip
$ mv phpMyAdmin-5.0.2-all-languages /usr/share/phpmyadmin

If wget or unzip are missing you can install them using the apt install command.

Next, create tmp directory and set the proper permissions.

$ mkdir /usr/share/phpmyadmin/tmp
$ chown -R www-data:www-data /usr/share/phpmyadmin
$ chmod 777 /usr/share/phpmyadmin/tmp

Step 2: Configure phpMyAdmin

Next, you need to configure web server to serve phpMyAdmin over the network by creating an Apache configuration file for phpMyAdmin:

$ sudo nano /etc/apache/conf-available/phpmyadmin.conf

Add the content below to the configuration file you have just created.

Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
 
<Directory /usr/share/phpmyadmin/>
   AddDefaultCharset UTF-8
   <IfModule mod_authz_core.c>
      <RequireAny>
      Require all granted
     </RequireAny>
   </IfModule>
</Directory>
 
<Directory /usr/share/phpmyadmin/setup/>
   <IfModule mod_authz_core.c>
     <RequireAny>
       Require all granted
     </RequireAny>
   </IfModule>
</Directory>

Save and close the file, enable the configuration, and restart apache to pick up the new changes using the following commands:

$ sudo a2enconf PHPMyAdmin
$ sudo systemctl restart apache2

You now have the latest phpMyAdmin on you Ubuntu system which can be accessed through the server IP address or domain name.

http://example.com/phpmyadmin

From this point onwards, whether you used the default Ubuntu 20.04 phpMyAdmin or you opted to go for the latest version, everything is pretty much the same from here on.

Sign in with the username and password that you used to access MySQL on the command line. If the user has no privileges then they may have to be set from the MySQL privileged admin user you have. It is important to disable the root user from non-local sources for security reasons seeing phpMyAdmin is generally available off the Internet.

Step 3: Secure Your phpMyAdmin Instance

PhpMyAdmin is a popular target for attackers, and you should take extra care to prevent unauthorized access. We are going to do this by adding a gateway in front of the entire application by using Apache’s built-in .htaccess authentication and authorization functionalities.

Read Also  Boost 1.64.0 Beta 2 Release is now Available

Enable the use of .htaccess file overrides by editing your Apache configuration file with this command.

$ sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Add an AllowOverride All directive within the Directory /usr/share/phpmyadmin section of the configuration file, like this:

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All
    . . .
</Directory>

Save and close the file.

Restart Apache to implement the changes.

$ sudo systemctl restart apache2

Create a password file outside of the directories that are being served directory using the htpasswd utility:

$ sudo htpasswd -c /etc/phpmyadmin/.htpasswd username

You will be prompted to select and confirm a password for the user you are creating.

You can create additional users using the command below. Notice that the -c flag is not used when adding users.

$ sudo htpasswd /etc/phpmyadmin/.htpasswd anotheruser

Now let’s create the .htaccess file in your phpMyAdmin root folder

$ sudo nano /usr/share/phpmyadmin/.htaccess

Type in the following rules into the file:

Read Also  The First KDevelop 5.0.0 Beta

AuthType Basic
AuthName "Restricted area"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Save and close the file.

These are what the options you have for securing the folder:

  • AuthType Basic: This line specifies the authentication type that you are implementing. This type will implement password authentication using a password file.
  • AuthName: This is the message for the authentication dialog box. You should keep this generic so that unauthorized users don’t gain any information about what is being protected.
  • AuthUserFile: This sets the location of the password file that will be used for authentication. This should be outside of the directories that are being served.
  • Require valid-user: This specifies that only authenticated users should be given access to this resource.

This setup adds an additional layer of security with a popup dialog that requires a username and password to access files within the folder.

Conclusion

You now have downloaded, install the latest phpMyAdmin, and configured it on your Ubuntu 20.04 server. You can create databases, users, tables, and other database objects as well as perform the usual operations like selecting, deleting, and modifying structures and data.