How To Install and Secure phpMyAdmin With Apache On A CentOS 7 Server
How To Install and Secure phpMyAdmin With Apache On A CentOS 7 Server
7 DAYS Upcoming Tech Talk: Keeping Your Sites and Users Safe Using SSL
TUTORIAL
By Justin Ellingwood
Published on August 7, 2014 564.4k
Introduction
Relational database management systems like MySQL and MariaDB are needed for a
S C R O L L TO TO P
significant portion of web sites and applications. However, not all users feel comfortable
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 1/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
To solve this problem, a project called phpMyAdmin was created in order to offer an
alternative in the form of a web-based management interface. In this guide, we will
demonstrate how to install and secure a phpMyAdmin configuration on a CentOS 7 server.
We will build this setup on top of the Apache web server, the most popular web server in the
world.
Prerequisites
Before we begin, there are a few requirements that need to be settled.
To ensure that you have a solid base to build this system upon, you should run through our
initial server setup guide for CentOS 7. Among other things, this will walk you through
setting up a non-root user with sudo access for administrative commands.
The second prerequisite that must be fulfilled in order to start on this guide is to install a
LAMP Linux, Apache, MariaDB, and PHP stack on your CentOS 7 server. This is the
platform that we will use to serve our phpMyAdmin interface MariaDB is also the database
management software that we are wishing to manage). If you do not yet have a LAMP
installation on your server, follow our tutorial on installing LAMP on CentOS 7.
When your server is in a properly functioning state after following these guides, you can
continue on with the rest of this page.
To get the packages we need, we’ll have to add an additional repo to our system. The EPEL
repo (Extra Packages for Enterprise Linux) contains many additional packages, including the
phpMyAdmin package we are looking for.
S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 2/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
The EPEL repository can be made available to your server by installing a special package
called epel-release . This will reconfigure your repository list and give you access to the
EPEL packages.
Now that the EPEL repo is configured, you can install the phpMyAdmin package using the
yum packaging system by typing:
The installation will now complete. The installation included an Apache configuration file that
has already been put into place. We will need to modify this a bit to get it to work correctly
for our installation.
Open the file in your text editor now so that we can make a few changes:
Inside, we see some directory blocks with some conditional logic to explain the access
policy for our directory. There are two distinct directories that are defined, and within these,
configurations that will be valid for both Apache 2.2 and Apache 2.4 (which we are running).
Currently, this setup is configured to deny access to any connection not being made from
the server itself. Since we are working on our server remotely, we need to modify some lines
to specify the IP address of your home connection.
Change any lines that read Require ip 127.0.0.1 or Allow from 127.0.0.1 to refer to your
home connection’s IP address. If you need help finding the IP address of your home
connection, check out the next section. There should be four locations in the file that must
be changed:
S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 3/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
Require ip your_workstation_IP_address
. . .
Allow from your_workstation_IP_address
. . .
When you are finished, restart the Apache web server to implement your modifications by
typing:
With that, our phpMyAdmin installation is now operational. To access the interface, go to
your server’s domain name or public IP address followed by /phpMyAdmin , in your web
browser:
S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 4/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
To sign in, use a username/password pair of a valid MariaDB user. The root user and the
MariaDB administrative password is a good choice to get started. You will then be able to
access the administrative interface:
S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 5/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
Note: This is not the IP address of your VPS, it is the IP address of your home or work
computer.
You can find out how the greater web sees your IP address by visiting one of these sites in
your web browser:
What’s My IP Address?
What’s My IP?
My IP Address
Compare a few different sites and make sure they all give you the same value. Use this value
in the configuration file above.
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 6/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
The phpMyAdmin instance installed on our server should be completely usable at this point.
However, by installing a web interface, we have exposed our MySQL system to the outside
world.
Even with the included authentication screen, this is quite a problem. Because of
phpMyAdmin’s popularity combined with the large amount of data it provides access to,
installations like these are common targets for attackers.
We will implement two simple strategies to lessen the chances of our installation being
targeted and compromised. We will change the location of the interface from /phpMyAdmin
to something else to sidestep some of the automated bot brute-force attempts. We will also
create an additional, web server-level authentication gateway that must be passed before
even getting to the phpMyAdmin login screen.
To change the URL where our phpMyAdmin interface can be accessed, we simply need to
rename the alias. Open the phpMyAdmin Apache configuration file now:
Toward the top of the file, you will see two lines that look like this:
These two lines are our aliases, which means that if we access our site’s domain name or IP
address, followed by either /phpMyAdmin or /phpmyadmin , we will be served the content at
/usr/share/phpMyAdmin .
We want to disable these specific aliases since they are heavily targeted by bots and
malicious users. Instead, we should decide on our own alias. It should be easy to remember,
but not easy to guess. It shouldn’t indicate the purpose of the URL location. In
S Cour
ROLLcase,
TO TOwe’ll
P
go with /nothingtosee .
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 7/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
To apply our intended changes, we should remove or comment out the existing lines and
add our own:
Now, if you go to the previous location of your phpMyAdmin installation, you will get a 404
error:
However, your phpMyAdmin interface will be available at the new location we selected:
S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 8/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
Fortunately, most web servers, including Apache, provide this capability natively. We will just
need to modify our Apache configuration file to use an authorization file.
Open the phpMyAdmin Apache configuration file in your text editor again:
Within the /usr/share/phpMyAdmin directory block, but outside of any of the blocks inside,
we need to add an override directive. It will look like this:
S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 9/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
. . .
<Directory /usr/share/phpMyAdmin/>
AllowOverride All
<IfModule mod_authz_core.c>
. . .
</Directory>
. . .
This will allow us to specify additional configuration details in a file called .htaccess located
within the phpMyAdmin directory itself. We will use this file to set up our password
authentication.
Our next step is to create the .htaccess file within that directory. Use your text editor to do
so now:
AuthType Basic
AuthName "Admin Login"
AuthUserFile /etc/httpd/pma_pass
Require valid-user
S C R O L L TO TO P
AuthType Basic This line specifies the authentication type that we are implementing. This
type will implement password authentication using a password file.
AuthName This sets the message for the authentication dialog box. You should keep this
generic so that unauthorized users won’t gain knowledge about what is being protected.
AuthUserFile This sets the location of the actual password file that will be used for
authentication. This should be outside of the directories that are being served. We will
create this file in a moment.
Require valid-user This specifies that only authenticated users should be given access to
this resource. This is what actually stops unauthorized users from entering.
When you are finished entering this information, save and close the file.
This can be accomplished through the use of an Apache utility called htpasswd . We invoke
the command by passing it the location where we would like to create the file and the
username we would like to enter authentication details for:
The -c flag indicates that this will create an initial file. The directory location is the path and
filename that will be used for the file. The username is the first user we would like to add.
You will be prompted to enter and confirm a password for the user.
If you want to add additional users to authenticate, you can call the same command again
without the -c flag, and with a new username:
With our password file created, an authentication gateway has been implemented and we
should now see a password prompt the next time we visit our site: S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 11/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
Once you enter your credentials, you will be taken to the normal phpMyAdmin login page.
This added layer of protection will help keep your MySQL logs clean of authentication
attempts in addition to the added security benefit.
Conclusion
You can now manage your MySQL databases from a reasonably secure web interface. This
UI exposes most of the functionality that is available from the MySQL command prompt. You
can view databases and schema, execute queries, and create new data sets and structures.
Report an issue
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 12/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
Justin Ellingwood
Senior Technical Writer
DigitalOcean
REL ATED
What is Laravel?
Tutorial
Comments
50 Comments
S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 13/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
Leave a comment...
Sign In to Comment
1 I’m getting errors, do you have any ideas what I can do?
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 14/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
Reply Report
2
centos7
0
Solution from genericconfig works for me.
Thanks
Reply Report
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 15/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
1 The problem is php 5.5, you should downgrade to php 5.4 and then it will work
Reply Report
0
Do you first need to uninstall 5.5 to get 5.4 installed correctly?
Reply Report
0 Hi,
The Alias directive does not work for me. Mod_alias does exist in my /usr/lib/modules directory
and is called out in the Apache config file in the LoadModules directive. Any ideas ?
Ralper3
Reply Report
0 When I type yum install phpmyadmin its says “No package phpmyadmin available. Error:
Nothing to do” and I did install EPEL 7 1.
any ideas?
Reply Report
0
dl.fedoraproject.org/pub/epel/7/x86_64/p/phpMyAdmin-4.2.9 1.el7.noarch.rpm
then use :
then use:
rm epel-release*
then, use:
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 16/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
0 I am running 5.4 and still get php-tidy required. I run yum install php-tidy and I get package not
available.
Reply Report
http://download.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-0.2.noarch.rpm
is not available any more as it looks like Error 404 . You should change it to:
wget http://download.fedoraproject.org/pub/epel/beta/7/x86_64/epel-release-7-1.noarch.
0
new link:
dl.fedoraproject.org/pub/epel/7/x86_64/p/phpMyAdmin-4.2.9 1.el7.noarch.rpm
Reply Report
todoyu (a projectmanagement and CRM php script) and found out I could not access the
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 17/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
application through the browser to proceed with the install. Also found out, I can not access
myphpadmin with any computer other than with the Centos Lamp server itself. I get a page
with Forbidden (you don’t have permission to access /todoyu/ or the /“phpmyadmin” on this
server). Any help is appreciated.
Reply Report
0 Hey guys, there is a new link for PhpMyAdmin EPEL for Centos 7
http://ftp.uninett.no/linux/epel/7/x86_64/p/phpMyAdmin-4.2.9 1.el7.noarch.rpm
0
I think from the point of security people should still use fedoraproject.org rpm sources
BEFORE others, if the package is available there.
Reply Report
0
I got the link from Fedora project’s site.
Yesterday they had it on a mirror site but today they changed it on the ftp site.
0
cancel this link, here is the new one:
dl.fedoraproject.org/pub/epel/7/x86_64/p/phpMyAdmin-4.2.9 1.el7.noarch.rpm
Reply Report
0
Thanks ADONIS. Hope you understood my “problem” with the direct 3rd party link.
Reply Report
0
ADONIS, NeuroNet: S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 18/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
Sorry about the confusion. As for the correct link, Fedora actually uses a set of rotating
mirror sites, so it will be different each time you search for the link. That’s why it kept
changing as you checked back.
The link in the guide is out of date only because the EPEL repository was promoted out of
beta status. I tried to modify all of my CentOS 7 tutorials, but I guess I missed this one.
Because the CentOS 7 EPEL repo is out of beta, you can now install the EPEL repository
without going to an external site. Just type in:
This will reconfigure your set of repositories, allowing you to use EPEL packages without
having to hunt down a link. I have modified the guide above to reflect this. Apologies for the
oversight.
Reply Report
To find it : http://dl.fedoraproject.org/pub/epel/7/x86_64/repoview/phpMyAdmin.html
0
@jellingwood
0 NeuroNet
Yes, I understand your concerns but those previous links I found them on Fedora’s project’s
page few hours ago until they change them from mirrors to their servers. So now the link for
phpMyAdmin is located in Fedora’s servers.
S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 19/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
As about the 3rd party link, as long the link is a mirror of a specific project, then that is ok. For
example many times in LinuxMint I had to add something which was “3rd party link” but not a
“3rd party program” , it was just a mirror of that particular package.
Anyway, I hope now that the link is relying on Fedora’s server, you wont have any hesitations to
use it.
I have a question to ask you. Is your personal computer with Windows Os for example Windows
7 or with Linux Os ,for example LinuxMint, Ubuntu, Fedora etc?
Anyway, have a nice day and if you will need any help please do not hesitate to ask me.
Reply Report
0
I use Windows 7 Ultimate to work with, since i have a bunch of production tools that are not
available for Nix. For webservers i definetly preffer Linux (mayb it be Ubunto or CentOS .
Reply Report
0 NeuroNet
You can start dropping Windows 7 and converting to LinuxMint. There is nothing a Linux cannot
do much better than Windows. For MS Office, there is LibreOffice, for Photoshop there is Gimp,
there are lot of programs for Linux, free and for every need. Even if you run a Windows software
under Linux using WINE or VMWare, you will notice that the programs are running smoothly
because is a Windows environment who is working under Linux. None can beat Linux. Also,
Linux doesn’t has viruses.
Linux rules :)
Anyway, we are out of the topic, so I better leave and start working with my site:) See you.
Reply Report
S C R O L L TO TO P
BenJH October 28, 2014
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 20/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
Great guide, but when it comes to setting up the authentication gate I’m having problems.
0
Can login to phpMyAdmin perfectly fine without the authentication gate, but when I set it up I
can pass the gate but then phpMyAdmin login fails (even though the credentials are absolutely
100% correct). If I remove the auth gate, I can login again.
Have tried a few times setting up a new gate; same result every time.
Reply Report
0 Thank you, very helpful article, I’m trying to get word-press install on Cent, and this really help
with managing MySql.
Reply Report
Allow from IP
Htaccess auth
0 This tutuorial it related to CentOS 7 but tagged MySQL, Ubuntu, PHP, Apache. Please
write related tag and replace Ubuntu with CentOS. This will helpful to move on all CentOS tut.
Also you may use CentOS 7 tag instead CentOS.
Reply Report
0
That was a mistake. It’s been re-tagged with our CentOS tag. Thank you.
Reply Report
S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 21/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
BECOME A CONTRIBUTOR
DigitalOcean Products Virtual Machines Managed Databases Managed Kubernetes Block Storage
Object Storage Marketplace VPC Load Balancers
Learn More
S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 23/24
2/18/2021 How To Install and Secure phpMyAdmin with Apache on a CentOS 7 Server | DigitalOcean
Company
About
S C R O L L TO TO P
https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-with-apache-on-a-centos-7-server 24/24