Winkelwagen

    Sorry, we konden geen resultaten vinden voor jouw zoekopdracht.

    phpMyAdmin installeren in Ubuntu 18.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 18.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 de commando's:

    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.

    Kom je er niet uit?

    Ontvang persoonlijke hulp van onze supporters

    Neem contact op