Hulpartikel overzicht

Hulpartikel

phpMyAdmin installeren in Ubuntu 16.04

phpMyAdmin is een web interface, bedoelt om het beheren van MySQL-/MariaDB-databases over het internet makkelijker te maken. Veel voorkomende SQL-handelingen, zoals het beheer van databases, tabellen, kolommen, gebruikers, rechten, etc. kunnen vanuit de phpMyAdmin web interface uitgevoerd worden.

In dit artikel laten we zien hoe je phpMyAdmin installeert op een VPS met Ubuntu 16.04 en een bug verhelpt die je tijdens het gebruik tegen kunt komen.


phpMyAdmin installeren

 

Stap 1

Verbind met je VPS via SSH of gebruik de VPS-console en update eerst je server:

apt -y update
apt -y upgrade

Herstart nu eerst je VPS en herhaal na de herstart bovenstaande commando's (tenzij je VPS al up-to-date was). Sommige package updates zijn pas beschikbaar na het updaten en herstarten van je VPS.


 

Stap 2

Als onderdeel van de installatie wordt een database aangemaakt voor phpMyAdmin. Bij het schrijven van deze handleiding liepen wij tegen een probleem aan waarbij 'debian-sys-maint'@'localhost' geen rechten heeft tot die database, ondanks dat debian-sys-maint by default volledige rechten heeft tot alle databases. Vermoedelijk ontstaat dit probleem doordat de database in kwestie nog niet bestaat op het moment dat de controle wordt uitgevoerd. Om dit te voorkomen, is het raadzaam de database eerst handmatig aan te maken en de benodigde rechten toe te kennen.

Start een SQL-shell:

mysql -u root -p

 

Stap 3

Maak een database aan voor phpMyAdmin, bijvoorbeeld:

CREATE DATABASE phpmyadmin;

 

Stap 4

Geef 'debian-sys-maint'@'localhost' volledige rechten tot de nieuwe database:

GRANT ALL ON phpmyadmin.* TO 'debian-sys-maint'@'LOCALHOST';

 

Stap 5

Sluit vervolgens de SQL-shell met:

exit;

 

Stap 6

In stap 7 zal je gevraagd worden welke webserver je gebruikt. Mocht je niet zeker weten of / welke webserver je gebruikt, dan kun je dit voor de zekerheid eerst controleren met:

systemctl status apache2
systemctl status lighttpd

Krijg je bij de output van een van deze twee de melding 'Unit apache2/lighttpd.service not found', dan heb je die niet op je VPS staan. Krijg je bij beide commando's een dergelijke output, installeer dan eerst Apache voor je verder gaat.

Start vervolgens de installatie van phpMyAdmin met het commando:

apt -y install phpmyadmin

 

Stap 7

Je krijgt tijdens het installatieproces een aantal vensters te zien voor de configuratie van phpMyAdmin. De eerste is welke webserver je gebruikt:

configuring phpmyadmin select webserver


 

Stap 8

Er zal je nu gevraagd worden om een database aan te maken die gebruikt zal worden door phpMyAdmin. Zonder deze database zal phpMyAdmin niet werken, kies hier dan ook voor 'Yes'.

phpmyadmin dbconfig common


 

Stap 9

phpMyAdmin heeft bij de database die in stap 4 wordt aangemaakt ook een wachtwoord nodig. Stel hier een uniek wachtwoord in en klik op 'Enter' om verder te gaan en het wachtwoord nogmaals te bevestigen.

configuring phpmyadmin choose password


 

Stap 10

De installatie zelf is nu klaar, maar Apache kan niet direct phpMyAdmin gebruiken. Hiervoor moet je eerst nog de phpMyAdmin-configuratie voor Apache toevoegen aan de Apache-configuratie en Apache herstarten als volgt:

echo Include /etc/phpmyadmin/apache.conf >> /etc/apache2/apache2.conf
systemctl restart apache2

 

Stap 11

phpMyAdmin is nu klaar voor gebruik en je kunt het direct uitproberen door naar jehostname/phpmyadmin te gaan in je browser, bijvoorbeeld : server.voorbeeld.nl/phpmyadmin. Controleer eventueel je hostname met een van de volgende commando's:

cat /etc/hosts
hostnamectl

Voor het inloggen kun je een van je SQL-gebruikers gebruiken, die je achterhaald vanuit de SQL-shell (zie stap 2) met het commando:

SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user;

Voor een overzicht van veel gebruikte MariaDB-/MySQL-commando's, zie dit artikel. Je kunt bijvoorbeeld de uitleg daarin over het toevoegen van data aan een tabel gebruiken in het tabblad 'SQL' in phpMyAdmin, zie:

phpmyadmin sql query

Belangrijk: op moment van schrijven zit er een bug in phpMyAdmin bij het openen van tabellen. De bug lichten wij in de volgende paragraaf nader toe. Controleer of je ook deze bug ervaart door in phpMyAdmin een willekeurige tabel van een database te openen. Zo ja, doorloop dan de stappen in onderstaande paragraaf.


Warning in ./libraries/sql.lib.php#613 count(): Parameter must be an array or an object that implements Countable

Tijdens het schrijven van deze handleiding bleek er een bug in phpMyAdmin te zitten, waardoor je bovenstaande foutmelding, of de volgende melding te zien krijgt:

De oorzaak hiervan is dat er een stukje code verkeerd wordt afgesloten in het bestand /usr/share/phpmyadmin/libraries/sql.lib.php (zie 'Handmatige oplossing').

 

De snelle oplossing

De eenvoudigste oplossing is de volgende commando's gebruiken om de foute code aan te passen (let op de scrollbalk):

sed -i 's/(count($analyzed_sql_results\['\''select_expr'\''\] == 1)/(count($analyzed_sql_results\['\''select_expr'\''\]) == 1)/g' /usr/share/phpmyadmin/libraries/sql.lib.php
sed -i 's/($analyzed_sql_results\['\''select_expr'\''\]\[0\] == '\''[*]'\'')))/($analyzed_sql_results\['\''select_expr'\''\]\[0\] == '\''[*]'\''))/g' /usr/share/phpmyadmin/libraries/sql.lib.php
systemctl restart apache2

 

Handmatige oplossing

Je kun het probleem ook oplossen door zelf de foute code te corrigeren. Open eerst het bestand /usr/share/phpmyadmin/libraries/sql.lib.php:

nano /usr/share/phpmyadmin/libraries/sql.lib.php

Het bestand sql.lib.php komt op regels 612, 613 en 614 met de volgende code:

((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr'] == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*')))

Op de tweede regel wordt ['select_expr'] niet afgesloten met een haakje, en is het ontbrekende haakje naar het eind van de derde regel verplaatst. De correcte code is dus:

((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr']) == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*'))

Herstart na het aanpassen van de code Apache om de wijzigingen te verwerken:

systemctl restart apache2

 

Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.

Wil je dit artikel met andere gebruikers bespreken, laat dan vooral een bericht achter onder 'Reacties'.

Heb je ook een goed idee?

Stuur jouw idee in! Met genoeg stemmen komt jouw idee op onze wishlist!

Heeft dit artikel je geholpen?

Maak een account aan of log in om een beoordeling achter te laten.

Reacties

Maak een account aan of log in om een reactie te plaatsen.

Kom je er niet uit?

Ontvang persoonlijke hulp van onze supporters

Neem contact op