How to Install phpMyAdmin on Ubuntu

Requirements for Installing phpMyAdmin on Ubuntu

Before installing phpMyAdmin, we need to meet some basic requirements:

  • A LAMP stack (Linux, Apache, MySQL, and PHP) installed
  • PHP 5.2.0 or newer$ php -v PHP 5.5.9-1ubuntu4.6 (cli) (built: Feb 13 2015 19:17:11) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
  • The PHP mysql or mysqli extensions$ php -m | grep mysql mysql mysqli
  • MySQL 5.0.1 or newer$ mysql -v Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 39 Server version: 5.5.41-0ubuntu0.14.04.1-log (Ubuntu)

Install phpMyAdmin from Ubuntu Packages

The default Ubuntu repositories stay up-to-date with the latest stable releases of phpMyAdmin, and this is the recommended installation process for a production environment.

Step 1: Update Package Index

First, we need to make sure our local server is pulling the latest updates.

sudo apt-get update

Step 2: Install phpMyAdmin Package

Now we can install the latest version of phpMyAdmin.

sudo apt-get install -y phpmyadmin

Step 3: Configure phpMyAdmin Package

After installing phpMyAdmin, you will be presented with the package configuration screen.

Press the SPACE bar to place an “*” beside “apache2.”

Press TAB to highlight “OK,” then hit ENTER.

phpMyAdmin Package Configuration Select Apache2

Select “apache2” and hit OK.

The installation process will continue until you’re back at another package configuration screen.

Select “Yes” and then hit ENTER at the dbconfig-common screen:

phpMyAdmin Package Configuration dbconfig-common Select Yes

Select “Yes” and hit ENTER.

You will be prompted for your database administrator’s password.

Type it in, hit TAB to highlight “OK,” and then press ENTER.

phpMyAdmin Package Configuration Enter DB Admin Password

Enter your DB administrator’s password.

Next, enter a password for the phpMyAdmin application itself.

phpMyAdmin Package Configuration Enter phpMyAdmin Password

Enter the password you’d like to use to access the phpMyAdmin interface.

Confirm the phpMyAdmin application password.

phpMyAdmin Package Configuration Confirm phpMyAdmin Password

Confirm your phpMyAdmin password.

After the installation process completes, it adds the phpMyAdin configuration file here:

/etc/apache2/conf-enabled/phpmyadmin.conf

Enable PHP mcrypt Module

Check if the PHP mcrypt module is already in use:

php -m | grep mcrypt

If you don’t get any results, install the PHP mcrypt module with:

sudo php5enmod mcrypt

Now when we check, you should see mcrypt enabled:

$ php -m | grep mcrypt
mcrypt

Restart Apache

Now we should restart the Apache web server for changes to take affect:

sudo service apache2 restart

Access phpMyAdmin for the First Time

Now you can log in to phpMyAdmin by going to your server followed by /phpmyadmin.

You can just use http://YOUR_SERVER_IP/phpmyadmin if you don’t have domains set up yet.

Log in with the root user and the password you set for the phpMyAdmin application.

phpMyAdmin Login as root User

Log in to phpMyAdmin as the root user.

Now you’ll see the phpMyAdmin dashboard.

phpMyAdmin Dashboard

You should now see the phpMyAdmin dashboard.

Secure and Lock Down phpMyAdmin Interface

Naturally, because phpMyAdmin is such a common application installed on many web servers, it is a popular target for unauthorized access attempts. We can easily secure our phpMyAdmin installation by using Apache’s built-in .htaccess authentication.

Step 1: Edit phpMyAdmin’s Apache Config

We want to edit the phpMyAdmin Apache config that was created earlier:

sudo vi /etc/apache2/conf-available/phpmyadmin.conf

Add AllowOverride “ALL” directive below the DirectoryIndex:


        Options FollowSymLinks
        DirectoryIndex index.php
        AllowOverride ALL
        ...

Step 2: Restart Apache to Accept Config Changes

Restart Apache so our changes take affect:

sudo service apache2 restart

Step 3: Create an .htaccess File

Now that we’ve enabled overrides for our phpMyAdmin application from Apache, we need to actually create an override with an .htaccess file.

sudo vi /usr/share/phpmyadmin/.htaccess

Add this text:

AuthType Basic
AuthName "phpMyAdmin Users Only"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Step 4: Create an .htpasswd File for Authentication

First we need the htpasswd utility. If you don’t already have this installed, use the following:

sudo apt-get install apache2-utils

Now we can create a secure user for our phpMyAdmin application with the command:

$ sudo htpasswd -c /etc/phpmyadmin/.htpasswd phpmyadmin
New password:
Re-type new password:
Adding password for user phpmyadmin

If for some reason you wanted to give others access to the phpMyAdmin login screen but didn’t want them using your .htaccess credentials, you can create additional secure users with:

sudo htpasswd /etc/phpmyadmin/.htpasswd anotheruser

Now if you try to access the phpMyAdmin login, you’ll get the .htaccess password prompt first.

phpMyAdmin Login htaccess Password Prompt

You should now see the .htaccess password prompt we created

Install phpMyAdmin from Source

While it’s not recommended for production servers, because you have to manually ensure your install of phpMyAdmin is kept up-to-date, you can also install phpMyAdmin from source.

Step 1: Identify Apache’s DocumentRoot

We need to find Apache’s DocumentRoot so we know where to place our phpMyAdmin files:

$ grep DocumentRoot /etc/apache2/sites-available/000-default.conf
        DocumentRoot /var/www/html

In this case, we’ll need to put the phpMyAdmin files in /var/www/html.

Step 2: Download Latest Version of phpMyAdmin

The stable version of phpMyAdmin at the time this article was written: phpMyAdmin 4.3.11.1 (released 3/4/2015).

Visit the phpMyAdmin download page to grab the latest version of phpMyAdmin.

I ended up with a phpMyAdmin-4.3.11.1-english.tar.gz file in my /var/www/html directory.

$ cd /var/www/html
$ ls
index.html phpMyAdmin-4.3.11.1-english.tar.gz

Step 3: Unpack phpMyAdmin Files

sudo tar xvzf phpMyAdmin-4.3.11.1-english.tar.gz

Now rename the phpMyAdmin-4.3.11.1-english directory:

sudo mv phpMyAdmin-4.3.11.1-english phpmyadmin

Remove the phpMyAdmin files:

sudo rm phpMyAdmin-4.3.11.1-english.tar.gz

Step 4: Secure /phpmyadmin Directory

We want to set up a specific user for our phpMyAdmin install.

$ sudo adduser phpmyadmin
Adding user `phpmyadmin' ...
Adding new group `phpmyadmin' (1001) ...
Adding new user `phpmyadmin' (1001) with group `phpmyadmin' ...
Creating home directory `/home/phpmyadmin' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
sudo chown -R phpmyadmin.phpmyadmin /var/www/html/phpmyadmin

Step 5: Update phpMyAdmin config.inc With Install Wizard

To use the phpMyAdmin install wizard, we first need to set up the config.inc file.

cd /var/www/html/phpmyadmin
sudo mkdir config
sudo chmod o+rw config
sudo cp config.sample.inc.php config/config.inc.php
sudo chmod o+w config/config.inc.php

Step 6: Run phpMyAdmin Install Wizard

To begin the installation of phpMyAdmin, access the installation URL at:

http://example.com/phpmyadmin/setup/index.php

Under the “Servers” section, click on “New Server.”

phpMyAdmin Install from Source Click New Server

Under the “Servers” section, click on “New Server.”

Under the “Authentication” tab, type in your MySQL root password in the “Password for Config Auth” box and then click “Apply.”

phpMyAdmin Install from Source Authentication Tab Enter root Password

In the “Password for Config Auth” box, type in your MySQL root password.

Remove the phpMyAdmin /config directory for security.

sudo rm -rf /var/www/html/phpmyadmin/config

Final Thoughts on phpMyAdmin

Now that you’ve successfully installed phpMyAdmin on Ubuntu, you can start playing around with some of its more advanced features.

One thing we recommend taking a look at is the “Status” tab, which will display any current MySQL queries that are running on the server, as well as server uptime and the number of connections to the MySQL server.

Leave a Reply

Your email address will not be published. Required fields are marked *

RELATED POST

How to automatically restart Linux services with Systemd

Getting your Linux deployments working reliably is of paramount concern for production applications. One way to guarantee that a service…

How to Install SFTPGo on Ubuntu 22.04

Setup UFW Firewall For security reasons, it is recommended to install and configure the UFW firewall in your system. First,…

Executing Bash Scripts at Startup in Ubuntu Linux

Creating a Bash script in Ubuntu To create a Bash script in Ubuntu, you can use any text editor of…

How To Clear PHP’s Opcache

PHP can be configured to store precompiled bytecode in shared memory, called Opcache. It prevents the loading and parsing of PHP…