Przejdź do głównej zawartości

Instalacja phpMyAdmin (Debian).

Instalacja phpMyAdmin do łatwiejszej obsługi naszej bazy danych MySQL z poziomu przeglądarki WWW.

Dystrybucja: Debian 10

warning

Ten poradnik zakłada że na naszym serwerze jest już zainstalowany LAMP czyli Apache, MySQL oraz PHP.

warning

Jeśli stos LAMP mamy zainstalowany i działający, przechodzimy do instalacji phpmyadmin.

  • W pierwszej kolejności logujemy się do swojego VPS po SSH np. za pomocą puTTy, na domyślny port 22
  • Następnie po zalogowaniu na konto root wydajemy polecenie aktualizacji listy pakietów poleceniem:
apt update
Wynik:
root@adamhitme:~# apt update
Hit:1 http://ftp.debian.org/debian buster InRelease
Hit:2 http://security.debian.org buster/updates InRelease
Hit:3 http://ftp.debian.org/debian buster-updates InRelease
Reading package lists... Done

Ręczna instalacja phpMyAdmin.

W odróżnieniu od Debian 9 czy Debian 11, Debian 10 nie ma w repozytorium dostępnego pakietu phpMyAdmin. W związku z tym musimy zainstalować go ręcznie.

  • Instalujemy pakiety potrzebne dla phpMyAdmin:
apt -y install wget php php-cgi php-mysqli php-pear php-mbstring php-gettext libapache2-mod-php php-common php-phpseclib php-mysql
  • Pobieramy archiwum phpMyAdmin
wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip
  • Rozpakowujemy archiwum i przenosimy
unzip phpMyAdmin-5.1.1-all-languages.zip
mv phpMyAdmin-*/ /usr/share/phpmyadmin
  • Tworzymy katalog tymczasowy dla phpMyAdmin
mkdir -p /var/lib/phpmyadmin/tmp
  • zmieniamy właściciela dla katalogu
chown -R www-data:www-data /var/lib/phpmyadmin
  • Kopiujemy plik konfiguracyjny
cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php
  • Edytujemy plik konfiguracyjny
nano /usr/share/phpmyadmin/config.inc.php
  • Ustalamy sobie długie hasło-secret i wpisujemy w pliku konfiguracyjnym w linii
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
  • ma to wyglądać np. tak:
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
  • Ustalamy nowe hasło do mysql wpisując w miejsce 'haslo' - nasze hasło
$cfg['Servers'][$i]['controluser'] = 'pma'; 
$cfg['Servers'][$i]['controlpass'] = 'haslo';
  • Następnie usuwamy oznaczenia zakomentowanych (nieaktywnych) linii usuwając podwójne slashe ' // ' w następujących liniach:
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';
  • na końcu pliku konfiguracyjnego dodajemy linię wpisu z naszym katalogiem tymczasowym
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
  • Zapisujemy zmiany w pliku naciskając klawisz 'F2' oraz potwierdzając nazwę pliku klawiszem [enter].

Konfiguracja Apache.

  • Tworzymy i edytujemy plik phpmyadmin.conf
nano /etc/apache2/conf-enabled/phpmyadmin.conf
  • Wklejając poniższy kod
Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php

<IfModule mod_php5.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>

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
</IfModule>
<IfModule mod_php.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>

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
</IfModule>

</Directory>

<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</IfModule>
</Directory>

<Directory /usr/share/phpmyadmin/templates>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
  • Po czym restartujemy usługę Apache:
systemctl restart apache2

Konfiguracja bazy danych.

  • Importujemy potrzebne tabele do MySQL
mysql < /usr/share/phpmyadmin/sql/create_tables.sql
  • Następnie wydamy kilka poleceń SQL w MariaDB, w tym celu uruchamiamy poleceniem mysql
Wynik:
root@adamhitme:~# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 127
Server version: 10.3.29-MariaDB-0+deb10u1 Debian 10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>
  • następnie wprowadzamy kwerendę SQL:
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'haslo';

Uwaga! W miejsce 'haslo' - podajemy to samo hasło, które wpisaliśmy w pliku /usr/share/phpmyadmin/config.inc.php w pozycji $cfg['Servers'][$i]['controlpass']

  • Następnie tworzymy użytkownika np. janek, który będzie mógł zalogować się do phpMyAdmin, ponownie w miejscu 'haslo' nadajemy mu własne nowe hasło
GRANT ALL PRIVILEGES ON *.* TO 'janek'@'localhost' IDENTIFIED BY 'haslo' WITH GRANT OPTION;
  • Wychodzimy z MySQL poleceniem exit

Logowanie do panelu phpMyAdmin.

  • Otwieramy przeglądarkę i wpisujemy http://<adres IP serwera>/phpmyadmin
  • Podajemy login użytkownika np. (1) janek i (2) jego hasło, po czym klikamy w (3) "Wykonaj"

phpmyadmin logowanie phpMyAdmin - okno logowania do panelu.

  • Po poprawnym logowaniu przenosi nas do panelu phpMyAdmin.

phpmyadmin panel Panel phpMyAdmin