Instalacja PhpMyAdmin na Debian 10

Poradniki
phpmyadmin, debian, poradnik-miesiąca
psycho
psycho

Witajcie!

Dziś w krótkim poradniku opiszę jak zainstalować najnowszą* wersję phpmyadmin, czyli popularnego narzędzia do zarządzania bazami danych MySQL. Do poradnika został użyty czysty VPS KVM reinstalowany przez funkcje panelu.

⚠️ Jeśli używasz konta administratora "root", nie musisz dodawać przedrostku sudo lub w przypadku błędu o braku komendy po prostu go usuń.

Krok 1: Instalacja potrzebnych pakietów

Na początek zajmijmy się instalacją potrzebnych pakietów, co do instalacji apache i mariadb odsyłam do poradnika autorstwa @adminek153 : https://lvlup.rok.ovh/t/www-instalacja-apache-php-i-mysql-na-vps-dedyku/582

Debian 10 domyślnie w swoich repozytoriach posiada PHP w wersji 7.3, a więc dodawanie kluczy, repozytoriów możemy pominąć. Wpisujemy więc poniższe polecenie i czekamy na zakończenie instalacji wszystkich pakietów:

sudo apt install php-imagick php-phpseclib php-php-gettext php7.3-common php7.3-gd php7.3-imap php7.3-json php7.3-curl php7.3-zip php7.3-xml php7.3-mbstring php7.3-bz2 php7.3-intl php7.3-gmp unzip

Po instalacji pakietów w przypadku Apache2 wpisujemy:

systemctl restart apache2

Krok 2: Pobranie i instalacja PhpMyAdmin

⚠️ Jeśli potrzebujesz zainstalować inną wersję phpmyadmin należy podmienić link po poleceniu wget i nazwę archiwum po poleceniu unzip.

Przechodzimy do naszego katalogu domowego lub dowolnego katalogu gdzie chcemy pobrać nasze archiwum, po czym wpisujemy:

wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip

Po pobraniu należy wypakować archiwum. Robimy to poleceniem:

unzip phpMyAdmin-latest-all-languages.zip

⚠️ Jeśli chcesz zmienić miejsce, w którym zapiszesz phpmyadmin zapamiętaj ściężkę do folderu, będzie później potrzebna!

Następnie przenosimy katalog do katalogu /usr/share

sudo mv phpMyAdmin-latest-all-languages /usr/share/phpmyadmin

Następnie w celu uniknięcia problemów z uprawnieniami plików ustalamy użytkownika serwera www (www-data) jako właściciela plików:

sudo chown -R www-data:www-data /usr/share/phpmyadmin

Krok 3: Tworzenie bazy danych dla PhpMyAdmin

Następnym krokiem w naszym poradniku jest stworzenie bazy danych dla naszego narzędzia. W tym celu musimy wejść do naszego serwera MySQL:

sudo mysql -u root

Kiedy już to zrobiliśmy musimy utworzyć wcześniej powiedzianą bazę danych, więc w konsoli serwera mysql:

CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Następnie tworzymy użytkownika, który będzie miał do niej dostęp zamieniając super_tajne_haslo na ustalone przez nas hasło:

⚠️ Pamiętaj o utworzeniu mocnego hasła, używanie słabych haseł może narazić Cię na włamanie i/lub utratę danych, a tego byśmy nie chcieli prawda?

GRANT ALL ON phpmyadmin.* TO 'phpmyadmin'@'localhost' IDENTIFIED BY 'twoje_super_tajne_haslo';

Następnie przeładowujemy uprawnienia poleceniem:

FLUSH PRIVILEGES;

Gdy zrobiliśmy już poprzednie kroki możemy wyjść z klienta mysql poleceniem:

EXIT;

Krok 4: Konfiguracja Apache2 do obsługi phpmyadmin

⚠️ Jeśli wcześniej zmieniłeś ścieżkę zapisu narzędzia musisz je również zmienić w VirtualHoście. Inaczej serwer nie będzie mógł dobrze zinterpretować tego gdzie ma szukać naszego phpmyadmin.

Nadchodzi ten czas, ostatni krok w tym poradniku, a chodzi o konfigurację Apache2, aby poprawnie obsługiwał nasz PhpMyAdmin

Zaczynamy od stworzenia VirtualHosta, a po więcej informacji na ich temat odsyłam do wątku autorstwa @LinGruby : https://lvlup.rok.ovh/t/apache-virtualhost/252

Zaczynamy od stworzenia nowego pliku konfiguracyjnego VirtualHosta:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Następnie musimy utworzyć wpis VirtualHosta. Następujący wzór pozwoli na połączenie się z phpmyadmin przy użyciu http://mojeip/phpmyadmin:

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin


    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php

    
        
            AddType application/x-httpd-php .php
        
        
            SetHandler application/x-httpd-php
        

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    
    
        
            AddType application/x-httpd-php .php
        
        
            SetHandler application/x-httpd-php
        

        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
        php_admin_value mbstring.func_overload 0
    



# Disallow web access to directories that don't need it

    Require all denied


    Require all denied


    Require all denied

Gdy już mamy nasz VirtualHost musimy go włączyć poleceniem:

sudo a2enconf phpmyadmin.conf

Następnie tworzymy "folder tymczasowy" dla naszego phpmyadmin:

sudo mkdir -p /var/lib/phpmyadmin/tmp
sudo chown www-data:www-data /var/lib/phpmyadmin/tmp

Na koniec przeładowujemy nasz serwer Apache2, aby zaaktualizował konfigurację:

sudo systemctl reload apache2

Zakończenie:

Gratulacje użytkowniku! Właśnie przebrnąłeś przez niniejszy poradnik i powinieneś móc już cieszyć się efektami swojej pracy wchodząc na adres:

http://moje_ip/phpmyadmin

Pamiętaj jednak, aby dbać o używanie silnych haseł oraz o aktualności narzędzia, gdyż nowsze wersje mogą zawierać poprawki sporej ilości błędów, łatki bezpieczeństwa i poprawy stabilności.

To na tyle w tym poradniku, życzę miłego korzystania z PhpMyAdmin!


*Najnowsza wersja na dzień pisania poradnika to: 4.9.0.1

|84x126Poradnik miesiąca: wrzesień 2019

krfcm
krfcm Pionier

psycho:

Po pobraniu należy wypakować archiwum. Robimy to poleceniem:

wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.zip

Tutaj chyba coś jest nie tak ;)

Jakub
Jakub

Warto podmienić adres aby ludzie pobierali najnowszą wersję czyli 5.0.2 :slight_smile:

https://files.phpmyadmin.net/phpMyAdmin/5.0.2/phpMyAdmin-5.0.2-all-languages.zip

KMatuszak
KMatuszak Weteran

Można też użyć linku który będzie zawsze prowadził do najnowszej wersji 😉

https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip
psycho
psycho

Niestety dla mnie edycja nie jest już dostępna, więc nie mogę poprawić. Musi to zrobić ktoś wyższy ode mnie.

psycho
psycho

Po interwencji @DBanaszewski poradnik zaaktualizowany. Pozostałym dziękuję za radę.

mcheir
mcheir

Cytat sudo chown -R www-data:www-data /usr/share/phpmyadmin

Instalując na przykład wordpress z root tą komendą zabiłam system zmieniając uprawnienia. Czy chown r to dobry pomysł?

DBanaszewski
DBanaszewski α-tester v3

Tak, to dobry pomysł, bo wtedy wszystkie pliki w danym folderze, mają tego samego właściciela+grupę.

-R wykonuje zmianę właściciela+grupy rekursywnie dla wszystkich plików/folderów znajdujących się w danym katalogu.

mcheir:

zabiłam system zmieniając uprawnienia To nie jest wina poradnika, prawdopodobnie został popełniony błąd przez Ciebie ;)

mcheir
mcheir

Na pewno zrobiłam błąd. Jestem zielona w te klocki. Jak powinna brzmieć ta komenda dla użytkownika nazwa_użytkownika lub root? Analogicznie zrobiłam na wordpress kopiuj wklej komendę i zabiłam system. Tylko proszę prostym językiem do zielonej 😀

psycho
psycho

W tej komendzie głównym błąd to spacje dodane przed i po "/". Bez nich wszystko będzie okej.

System dalej działa, czy wymaga teraz reinstalacji?

Lumpiasty
Lumpiasty Stały bywalec

psycho:

System dalej działa, czy wymaga teraz reinstalacji?

Nawet jeśli działa to nie korzystałbym z niego w stanie, gdzie każdy plik w systemie ma za właściciela użytkownika, z którego działa apache. Naprawa tego to (tak mi się wydaje) bardziej skomplikowane zadanie niż reinstalacja wszystkiego.

mcheir
mcheir

sudo chown -R www-data:www-data /usr/share/phpmyadmin

Czy zamiast pierwszego www-data (przed dwukropkiem) mam wpisać root czy użytkownika o nazwie mcheir (czyli ja) będąc na koncie mcheir? Bo rozumiem że LAMPy instaluję na koncie mcheir. Sudo w komendach sugerują innego użytkownika niż root. System jest świeży, pytam prewencyjnie, bo wiem, że na pewno coś ubiję jak zwykle...

psycho
psycho

komenda jest poprawna i takiej należy użyć przy instalacji phpmyadmina. Polecenie sudo jest dla osób, które korzystają z innego konta niż root (i jest ono częścią pliku sudoers), a gdy ktoś robi to z konta root nie musi korzystać z tego polecenia na początku.

W razie pytań można pisać do mnie na PW i/lub oznaczać mnie gdzieś w wątkach.

Thomas33
Thomas33

nie moge zainstalowac mysql :/ image|641x157 jakies pomysły?

logixdev
logixdev

A dlaczego nie Ubuntu? Ma więcej repozytoriów dostępnych i jest przyjemniejsze w użytku. Zamiast MySQL polecam zainstalować nowszy fork, czyli MariaDB: apt update apt install mariadb-server

Thomas33
Thomas33

otrzymałem opinię, iż debian jest lepszy pod serwer mc. maria czyms sie rozni od mysql czy to to samo?

KrEdEnS
KrEdEnS Moderator Freebies

Jest wydajniejsza

Thomas33
Thomas33

psycho:

Jeśli chcesz zmienić miejsce, w którym zapiszesz phpmyadmin zapamiętaj ściężkę do folderu, będzie później potrzebna!

Następnie przenosimy katalog do katalogu /usr/share

sudo mv phpMyAdmin-latest-all-languages /usr/share/phpmyadmin

Następnie w celu uniknięcia problemów z uprawnieniami plików ustalamy użytkownika serwera www (www-data) jako właściciela plików:

sudo chown -R www-data:www-data /usr/share/phpmyadmin

ta część u mnie nie działa, nie mam takiego folderu jak phpmyadmin. Stworzyc go recznie?

Thomas33
Thomas33

mam folder php

KrEdEnS
KrEdEnS Moderator Freebies

Komenda poniżej przenosi i zmienia nazwę katalogowi phpMyAdmin-latest-all-languages

sudo mv phpMyAdmin-latest-all-languages /usr/share/phpmyadmin

EDIT. Upewnij się, że masz zainstalowanego unzip-a i rozpakowanego zipa z pma