phpMyAdmin installeren en beveiligen op Ubuntu 18.04 LTS
phpMyAdmin is een gratis en open bron beheerprogramma voor MySQL en MariaDB. phpMyAdmin is een web-gebaseerd programma waarmee je MySQL of MariaDB databases gemakkelijk kunt beheren. Je kunt met phpMyAdmin beheertaken uitvoeren zoals het maken, bewerken of verwijderen van databases, importeren en exporteren van databank back-ups, zoekopdrachten uitvoeren en gebruikers en permissies beheren.
Kenmerken
- Ondersteuning voor meerdere talen.
- Importeer gegevens uit CSV en SQL.
- Live grafieken om de activiteit van de MySQL server te volgen, zoals verbindingen, processen, CPU/geheugen gebruik, enz.
- Globaal zoeken in een database of een deel ervan.
- Eenvoudige en gemakkelijk te gebruiken webinterface.
- Uitvoer van gegevens naar verschillende formaten zoals, CSV, SQL, XML, PDF, Word, Excel, LaTeX, en andere.
In deze zelfstudie gaan we uitleggen hoe je phpMyAdmin op Ubuntu 18.04 server kunt installeren en beveiligen.
Vereisten
- Een server waarop Ubuntu 18.04 draait.
- Een niet-root gebruiker met sudo privileges.
Installeer phpMyAdmin
Voor je begint, moet je Apache en MySQL op je server installeren. Je kunt die installeren met het volgende commando:
sudo apt-get install apache2 mysql-server -y
Standaard is phpMyAdmin niet beschikbaar in de Ubuntu 18.04 standaard repository. Je zult dus de PHP repository van derden aan je systeem moeten toevoegen.
Je kunt hem toevoegen door gewoon het volgende commando uit te voeren:
sudo apt-get install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
Zodra de repository is toegevoegd, installeer je phpMyAdmin door het volgende commando uit te voeren:
sudo apt-get install phpmyadmin php-mbstring php-gettext -y
Tijdens de installatie wordt je gevraagd de webserver te kiezen zoals hieronder:
Kies Apache en klik op de OK knop. Je wordt doorverwezen naar de volgende pagina:
Klik nu op de Yes knop. Je zou de volgende pagina moeten zien:
Geef hier je MySQL toepassingswachtwoord voor phpMyAdmin op en klik op de OK knop.
Als phpMyAdmin geïnstalleerd is, schakel dan de mbstring PHP uitbreiding in met het volgende commando:
sudo phpenmod mbstring
Herstart vervolgens de Apache dienst om de veranderingen toe te passen:
sudo systemctl restart apache2
Configureer gebruikersauthenticatie
phpMyAdmin maakt automatisch een database gebruiker aan, phpmyadmin genaamd, met het administratieve wachtwoord dat je tijdens de installatie instelde. Maar, het is aan te bevelen een aparte gebruiker aan te maken voor het beheren van databases via de phpMyAdmin webinterface. In de nieuwste versie van MariaDB is de root MySQL gebruiker standaard ingesteld om te authenticeren met de auth_socket plugin. Wil je dus in phpMyAdmin inloggen als je root MySQL gebruiker, dan moet je de authenticatie methode veranderen van auth_socket naar mysql_native_password.
Log eerst in op de MySQL shell met het volgende commando:
sudo mysql
Controleer vervolgens de authenticatiemethode van de MySQL gebruiker met het volgende commando:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Uitvoer:
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *AC18DF5CAE34BF4796EF975702F038A566B48B42 | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.01 sec)
In de bovenstaande uitvoer zou je moeten zien dat de root gebruiker de auth_socket plugin gebruikt.
Je kunt de root account instellen om te authenticeren met een wachtwoord door het volgende commando uit te voeren:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Spoel vervolgens de privileges door met het volgende commando:
mysql> FLUSH PRIVILEGES;
Controleer nu de authenticatiemethoden door het volgende commando uit te voeren:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Uitvoer:
+------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *AC18DF5CAE34BF4796EF975702F038A566B48B42 | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.01 sec)
Maak vervolgens een aparte gebruiker aan met de naam phpmyadminuser om verbinding te maken met phpMyAdmin.
Log eerst in op de MySQL shell:
mysql -u root -p
Voer je root wachtwoord in, maak dan een gebruiker aan met het volgende commando:
MariaDB [(none)]> CREATE USER 'phpmyadminuser'@'localhost' IDENTIFIED BY 'password';
Geef vervolgens de juiste rechten aan phpmyadminuser met het volgende commando:
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadminuser'@'localhost' WITH GRANT OPTION;
Verlaat tenslotte de MySQL shell met het volgende commando:
MariaDB [(none)]> exit;
Open nu je webbrowser en typ de URL http://your-server-ip/phpmyadmin. Je wordt doorverwezen naar de volgende pagina:
Geef hier je gebruikersnaam en wachtwoord op. Klik dan op de Go knop. Je zou nu het PhpMyAdmin dashboard moeten zien op de volgende pagina:
PhpMyAdmin beveiligen
phpMyAdmin is nu geïnstalleerd en geconfigureerd. Maar, het is aan te bevelen je phpMyAdmin instantie te beveiligen om ongeoorloofde toegang te voorkomen Je kunt phpMyAdmin beveiligen door Apache’s ingebouwde .htaccess authenticatie en autorisatie functionaliteiten te gebruiken.
Schakel daartoe eerst het gebruik van .htaccess bestandsoverrides in door phpmyadmin.conf bestand te bewerken:
sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Breng de volgende veranderingen aan:
<Directory /usr/share/phpmyadmin> Options SymLinksIfOwnerMatch DirectoryIndex index.php AllowOverride All
Sla het bestand op en sluit het. Herstart daarna de Apache dienst om de wijzigingen toe te passen:
sudo systemctl restart apache2
Maak vervolgens een .htaccess bestand aan binnen de phpmyadmin directory:
sudo nano /usr/share/phpmyadmin/.htaccess
Voeg de volgende regels toe:
AuthType Basic AuthName "Restricted Files" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
Sla het bestand op en sluit het. Maak dan een gebruiker met de naam admin met het httpasswd hulpprogramma:
sudo htpasswd -c /etc/phpmyadmin/.htpasswd admin
Output:
New password: Re-type new password: Adding password for user admin
Je phpMyAdmin instantie is nu beveiligd met een extra laag van authenticatie.
Open nu je webbrowser en typ de URL http://your-server-ip/phpmyadmin. Je wordt nu doorgestuurd naar de extra accountnaam en het wachtwoord die je zojuist instelde, zoals hieronder te zien is:
Geef nu je gebruikersnaam en het wachtwoord op en klik op de Log In knop. Je zou nu moeten worden doorverwezen naar de gewone phpMyAdmin authenticatie pagina.