phpMyAdmin je bezplatný a open source nástroj pro správu serverů MySQL a MariaDB přes webové rozhraní. Pomocí phpMyAdmin můžete vytvářet a spravovat databáze a uživatele, spouštět příkazy SQL, importovat a exportovat data a provádět databázové činnosti, jako je vytváření, mazání, tabulky, sloupce, indexy, oprávnění a mnoho dalších. phpMyAdmin je jedním z nejoblíbenějších a nejpoužívanějších nástrojů pro správu, zejména pro webhostingové služby.
Funkce
- Poskytuje jednoduché a uživatelsky přívětivé webové rozhraní.
- Importujte data z CSV a SQL.
- Podpora většiny funkcí MySQL, včetně vytváření, kopírování, rušení, přejmenování, rušení a úprav databází, tabulek, polí a indexů.
- Umožňuje exportovat data do různých formátů, jako je PDF, CSV, SQL, XML a mnoho dalších.
- Správa více serverů.
- Vytváření složitých dotazů pomocí Query-by-example (QBE).
V tomto tutoriálu vám ukážeme, jak nainstalovat a zabezpečit phpMyAdmin na serveru CentOS 8.
Požadavky
- Server se systémem CentOS 8.
- Na serveru je nakonfigurováno heslo uživatele root.
Instalovat LAMP Server
Nejprve budete muset nainstalovat Apache, MariaDB, PHP a další PHP knihovny na váš server. Všechny je můžete nainstalovat pomocí následujícího příkazu:
dnf install httpd mariadb-server php php-pdo php-pecl-zip php-json php-common php-fpm php-mbstring php-cli php-mysqlnd php-json php-mbstring wget unzip
Jakmile jsou všechny balíčky nainstalovány, spusťte službu Apache a MariaDB a povolte jim spuštění po restartu systému pomocí následujícího příkazu:
systemctl start httpd
systemctl start mariadb
systemctl enable httpd
systemctl enable mariadb
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Nakonfigurujte MariaDB
Ve výchozím nastavení není MariaDB zabezpečena. Nejprve jej tedy musíte zajistit. Můžete to udělat spuštěním skriptu mysql_secure_installation:
mysql_secure_installation
Odpovězte na všechny otázky, jak je uvedeno níže:
Set root password? [Y/n] Y New password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Po dokončení byste měli vidět následující výstup:
... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
V tomto okamžiku je vaše instalace MariaDB zabezpečena.
Instalovat phpMyAdmin
Ve výchozím nastavení není phpMyAdmin k dispozici ve výchozím úložišti CentOS 8. Budete si tedy muset stáhnout nejnovější verzi phpMyAdmin z jejich oficiálních stránek. Můžete si jej stáhnout pomocí následujícího příkazu:
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.2/phpMyAdmin-4.9.2-all-languages.zip
Po stažení stažený soubor rozbalte pomocí následujícího příkazu:
unzip phpMyAdmin-4.9.2-all-languages.zip
Dále přesuňte extrahovaný obsah do adresáře /usr/share, jak je znázorněno níže:
mv phpMyAdmin-4.9.2-all-languages /usr/share/phpmyadmin
Dále změňte adresář na /usr/share/phpmyadmin a přejmenujte soubor config.sample.inc.php:
cd /usr/share/phpmyadmin
mv config.sample.inc.php config.inc.php
Dále otevřete soubor pomocí svého oblíbeného textového editoru, jak je znázorněno níže:
nano config.inc.php
Změňte následující řádek:
$cfg['blowfish_secret'] = 'your-secret-password';
Po dokončení uložte a zavřete soubor. Poté importujte soubor create_tables.sql pomocí následujícího příkazu:
mysql < /usr/share/phpmyadmin/sql/create_tables.sql -u root -p
Po zobrazení výzvy k importu tabulky zadejte heslo uživatele root.
Dále vytvořte adresář tmp pro phpmyadmin a udělte mu správná oprávnění:
mkdir /usr/share/phpmyadmin/tmp
chown -R apache:apache /usr/share/phpmyadmin
chmod 777 /usr/share/phpmyadmin/tmp
Konfigurovat Apache pro phpMyAdmin
Dále budete muset vytvořit konfigurační soubor virtuálního hostitele Apache pro phpMyAdmin. Můžete jej vytvořit pomocí následujícího příkazu:
nano /etc/httpd/conf.d/phpmyadmin.conf
Přidejte následující řádky:
Alias /phpmyadmin /usr/share/phpmyadmin <Directory /usr/share/phpmyadmin/> AddDefaultCharset UTF-8 <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require all granted </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory> <Directory /usr/share/phpmyadmin/setup/> <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require all granted </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory>
Po dokončení uložte a zavřete soubor. Poté restartujte službu Apache pomocí následujícího příkazu:
systemctl restart httpd
Stav Apache můžete zkontrolovat pomocí následujícího příkazu:
systemctl status httpd
Měli byste vidět následující výstup:
? httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/httpd.service.d ??php-fpm.conf Active: active (running) since Wed 2019-12-18 01:07:52 EST; 6s ago Docs: man:httpd.service(8) Main PID: 5636 (httpd) Status: "Started, listening on: port 80" Tasks: 213 (limit: 25044) Memory: 28.7M CGroup: /system.slice/httpd.service ??5636 /usr/sbin/httpd -DFOREGROUND ??5639 /usr/sbin/httpd -DFOREGROUND ??5640 /usr/sbin/httpd -DFOREGROUND ??5641 /usr/sbin/httpd -DFOREGROUND ??5642 /usr/sbin/httpd -DFOREGROUND Dec 18 01:07:52 centos8 systemd[1]: Stopped The Apache HTTP Server. Dec 18 01:07:52 centos8 systemd[1]: Starting The Apache HTTP Server... Dec 18 01:07:52 centos8 httpd[5636]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::200:d0> Dec 18 01:07:52 centos8 httpd[5636]: Server configured, listening on: port 80 Dec 18 01:07:52 centos8 systemd[1]: Started The Apache HTTP Server.
Konfigurovat SELinux a bránu firewall
Ve výchozím nastavení je SELinux povolen v CentOS 8. Takže budete muset nakonfigurovat SELinux pro phpMyAdmin, aby fungoval správně.
Nejprve nainstalujte balíček policycoreutils-python-utils pro správu prostředí SELinux pomocí následujícího příkazu:
dnf install policycoreutils-python-utils
Dále povolte přístup do adresáře /usr/share/phpmyadmin pomocí následujícího příkazu:
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/phpmyadmin/'
semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/phpmyadmin/tmp(/.*)?"
Nyní projděte všechny soubory v adresáři phpmyadmin spuštěním následujícího příkazu:
restorecon -Rv '/usr/share/phpmyadmin/'
Dále budete muset vytvořit pravidlo brány firewall pro povolení služby HTTP z externích sítí. Můžete to povolit pomocí následujícího příkazu:
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
phpMyAdmin je nyní nainstalován a nakonfigurován. Nyní je čas zkontrolovat, zda funguje nebo ne.
Otevřete webový prohlížeč a zadejte adresu URL http://ip-vaseho-serveru/phpmyadmin. Budete přesměrováni na následující stránku:
Bezpečný phpMyAdmin
V tomto okamžiku instance phpMyAdmin funguje správně. Zabezpečení vaší instance phpMyAdmin před vnějším světem je však pro vás důležitým úkolem. V této sekci vám ukážeme, jak zabezpečit instanci phpMyAdmin.
Povolit phpMyAdmin z konkrétní IP adresy
Nejprve budete muset nakonfigurovat svůj phpMyAdmin tak, aby byl přístupný pouze z IP adresy vašeho domácího připojení.
Můžete jej nakonfigurovat úpravou souboru /etc/httpd/conf.d/phpmyadmin.conf:
nano /etc/httpd/conf.d/phpmyadmin.conf
Najděte následující řádky:
<RequireAny> Require all granted </RequireAny>
A nahraďte je následujícím:
<RequireAny> Require ip your-home--connection-ip-address Require ip ::1 </RequireAny>
Po dokončení uložte a zavřete soubor.
Konfigurovat další vrstvu ověřování
Je dobré chránit váš adresář phpmyadmin heslem nastavením základního ověřování.
Chcete-li tak učinit, vytvořte nový ověřovací soubor pomocí nástroje htpasswd, jak je uvedeno níže:
mkdir /etc/phpmyadmin
htpasswd -c /etc/phpmyadmin/.htpasswd admin
Budete požádáni o zadání hesla správce, jak je uvedeno níže:
New password: Re-type new password: Adding password for user admin
Dále budete muset nakonfigurovat Apache tak, aby používal soubor .htpasswd. Můžete to udělat úpravou souboru /etc/httpd/conf.d/phpmyadmin.conf.
nano /etc/httpd/conf.d/phpmyadmin.conf
Přidejte následující řádky pod řádek "AddDefaultCharset UTF-8":
Options +FollowSymLinks +Multiviews +Indexes AllowOverride None AuthType basic AuthName "Authentication Required" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
Uložte soubor a restartujte službu Apache, aby se změny projevily:
systemctl restart httpd
Přístup k phpMyAdmin
Nyní je vaše instance phpMyAdmin zabezpečena další vrstvou zabezpečení. Otevřete webový prohlížeč a zadejte adresu URL http://ip-vaseho-serveru/phpmyadmin. Budete požádáni o zadání přihlašovacích údajů uživatele, kterého jste dříve vytvořili, jak je znázorněno níže:
Zadejte své uživatelské jméno a heslo správce a poté klikněte na tlačítko OK. Budete přesměrováni na přihlašovací stránku phpMyAdmin:
Nyní zadejte své přihlašovací údaje pro administrátora MySQL a klikněte na tlačítko Přejít. Měli byste vidět následující stránku:
Závěr
Gratulujeme! úspěšně jste nainstalovali a zabezpečili phpMyAdmin na serveru CentOS 8. Nyní můžete vytvářet databáze, uživatele, tabulky a spravovat je z webového rozhraní. Neváhejte se mě zeptat, pokud máte nějaké otázky.