How to Install phpMyAdmin with Nginx, MariaDB, PHP7 on Ubuntu 16.04
phpMyAdmin is a free and open-source web-based database management tool written in PHP. It provides a graphical web interface for users to manage MySQL or MariaDB database. The latest stable version available is 4.6.5.2 , released on December 5, 2016. In this tutorial, we will discuss how to install phpMyAdmin with Nginx, MariaDB, PHP7 (LEMP) on a Ubuntu 16.04 VPS or dedicated server.
Prerequisites
It is assumed that you have already installed LEMP stack on Ubuntu 16.04. If not, please check out the following tutorial.
With that out of the way, let’s get started with installation.
Step 1: Download and Install phpMyAdmin
phpMyAdmin is included in Ubuntu 16.04 software repository, so we can easily install it with the command below
sudo apt update sudo apt install phpmyadmin
Note: The above command will install all necessary dependencies including PHP7 extensions. If however the command suggests installing PHP5 extensions, then you might have a broken software repository. You should change your software sources in /etc/apt/sources.list
file. I encountered this bug once.
During the installation, it will prompt you to select a web server to configure. Nginx isn’t in the list, so press the Tab key and hit OK to skip this step.
Next, select Yes to create a new database.
This will also create a new database user named phpmyadmin
. Give this user a password.
Once done, a new database named phpmyadmin
is created and the database user phpmyadmin
has necessary privileges to manage this database.
Step 2: Configure Nginx
To be able to access the phpMyAdmin web interface, we need to configure Nginx. We will configure Nginx so that phpMyAdmin is a sub-directory of the existing website. Open your existing server block file of your website.
sudo nano /etc/nginx/conf.d/your-site.conf
Add the following lines in the server
section.
location /phpmyadmin { root /usr/share/; index index.php; try_files $uri $uri/ =404; location ~ ^/phpmyadmin/(doc|sql|setup)/ { deny all; } location ~ /phpmyadmin/(.+.php)$ { fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } }
Your phpMyAdmin files are in /usr/share/phpmyadmin/
directory. The above configuration tells Nginx that if visitors enter your-domain.com/phpmyadmin
in browser address bar, then find index.php
file in /usr/share/phpmyadmin/
directory and display the web page.
Save and close the file. Then test configuration and reload.
sudo nginx -t sudo systemctl reload nginx
Now you should be able to access phpMyAdmin web interface via
your-domain.com/phpmyadmin/
Login with MariaDB root user and password.
The advantage of accessing phpMyAdmin from sub-directory rather than sub-domain is that if you have HTTPS enable on your main domain name, then you don’t have to install new TLS certificate to secure phpMyAdmin.
If you are worried about security, you can change the phpMyAdmin URL to something else like
your-domain/secret-path
You can also prevent unauthorized access to the login page by implementing password authentication in Nginx.
Need help?
Do you need help setting up this on your own service?
Please contact us and we’ll provide you the best possible quote!