Како да инсталирате и да го обезбедите phpMyAdmin на Ubuntu 20.04
Претходна верзија на ова упатство е напишана од Бренан Бернс.
Вовед
Додека на многу корисници им е потребна функционалноста на системот за управување со бази на податоци како MySQL, тие можеби нема да се чувствуваат удобно во интеракција со системот исклучиво од MySQL промптот.
phpMyAdmin е создаден за корисниците да можат да комуницираат со MySQL преку веб-интерфејс. Во ова упатство, ќе разговараме за тоа како да го инсталирате и заштитите phpMyAdmin за да можете безбедно да го користите за да управувате со вашите бази на податоци на системот Ubuntu 20.04.
Предуслови
За да го комплетирате ова упатство, ќе ви требаат:
- Сервер Ubuntu 20.04. Овој сервер треба да има корисник кој не е root со административни привилегии и заштитен ѕид конфигуриран со
ufw
. За да го поставите ова, следете го нашиот првичен водич за поставување сервер за Ubuntu 20.04. - Стак LAMP (Linux, Apache, MySQL и PHP) инсталиран на вашиот Ubuntu 20.04 сервер. Ако ова сè уште не е завршено, можете да го следите ова упатство за инсталирање на стек LAMP на Ubuntu 20.04.
Дополнително, постојат важни безбедносни размислувања при користење на софтвер како phpMyAdmin, бидејќи тоа:
- Комуницира директно со вашата инсталација на MySQL
- Се справува со автентикација користејќи MySQL ингеренциите
- Извршува и враќа резултати за произволни SQL барања
Од овие причини, и бидејќи е широко распространета PHP апликација која често е цел на напади, никогаш не треба да го стартувате phpMyAdmin на оддалечени системи преку обична HTTP врска.
Ако немате постоечки домен конфигуриран со SSL/TLS сертификат, можете да го следите ова упатство за поставување виртуелен хост на Apache.
Чекор 1 - Инсталирање на phpMyAdmin
Можете да користите APT за да инсталирате phpMyAdmin од стандардните складишта на Ubuntu.
Како ваш не-root sudo корисник, ажурирајте го индексот на пакети на вашиот сервер:
- sudo apt update
После тоа, можете да го инсталирате пакетот phpmyadmin
. Заедно со овој пакет, официјалната документација исто така препорачува да инсталирате неколку PHP екстензии на вашиот сервер за да овозможите одредени функционалности и да ги подобрите перформансите.
Ако го следевте упатството за предуслов за стек LAMP, неколку од овие модули ќе бидат инсталирани заедно со пакетот php
. Сепак, се препорачува да ги инсталирате и овие пакети:
php-mbstring
: модул за управување со низи што не се ASCII и конвертирање низи во различни шифрирањаphp-zip
: оваа екстензија поддржува прикачување на датотеки.zip
на phpMyAdminphp-gd
: Овозможува поддршка за графичката библиотека GDphp-json
: Обезбедува PHP со поддршка за JSON серијализацијаphp-curl
: Дозволува PHP да комуницира со различни видови сервери користејќи различни протоколи
Имајте предвид дека ако користите верзија на PHP различна од стандардната инсталирана во предусловното упатство за стек LAMP, ќе треба да ги инсталирате соодветните верзии на овие пакети на модули. На пример, ако користите PHP верзија 8.0, ќе треба да го инсталирате пакетот php8.0-mbstring
наместо стандардниот php-mbstring
пакет.
Извршете ја следнава команда за да ги инсталирате овие пакети на вашиот систем. Сепак, имајте предвид дека процесот на инсталација бара од вас да направите некои избори за правилно да го конфигурирате phpMyAdmin. Наскоро ќе ги разгледаме овие опции:
- sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
Еве ги опциите што треба да ги изберете кога ќе ви биде побарано за правилно да ја конфигурирате инсталацијата:
- За изборот на серверот, изберете
apache2
Предупредување: кога ќе се појави известувањето, \apache2 е означено, но не избрано. Ако не притиснете SPACE
за да изберете Apache, инсталаторот не ги преместува потребните датотеки за време на инсталацијата. Притиснете SPACE
, TAB
и потоа ENTER
за да изберете Apache.
- Изберете
Да
кога ќе ве прашаат дали да се користиdbconfig-common
за поставување на базата на податоци - Потоа ќе биде побарано да изберете и потврдите лозинка за апликацијата MySQL за phpMyAdmin
Забелешка: Претпоставувајќи дека сте го инсталирале MySQL следејќи го чекорот 2 од предусловното упатство за стек LAMP, можеби сте решиле да го овозможите приклучокот Validate Password. Од моментот на пишување, овозможувањето на оваа компонента ќе предизвика грешка кога ќе се обидете да поставите лозинка за корисникот phpmyadmin:
За да го решите ова, изберете ја опцијата прекини за да го запрете процесот на инсталација. Потоа, отворете го вашиот MySQL потсетник:
- sudo mysql
Или, ако сте овозможиле автентикација на лозинка за root корисникот на MySQL, извршете ја оваа команда и потоа внесете ја вашата лозинка кога ќе биде побарано:
- mysql -u root -p
Од промптот, извршете ја следнава команда за да ја оневозможите компонентата Validate Password. Забележете дека ова всушност нема да го деинсталира, туку само да спречи вчитување на компонентата на вашиот MySQL сервер:
- UNINSTALL COMPONENT "file://component_validate_password";
После тоа, можете да го затворите клиентот MySQL:
- exit
Потоа обидете се повторно да го инсталирате пакетот phpmyadmin
и тој ќе работи како што се очекуваше:
- sudo apt install phpmyadmin
Откако ќе се инсталира phpMyAdmin, можете уште еднаш да го отворите промптот за MySQL со sudo mysql
или mysql -u root -p
и потоа да ја извршите следнава команда за повторно да ја овозможите Validate Password компонента:
- INSTALL COMPONENT "file://component_validate_password";
Процесот на инсталација ја додава конфигурациската датотека phpMyAdmin Apache во директориумот /etc/apache2/conf-enabled/
, каде што се чита автоматски. За да го завршите конфигурирањето на Apache и PHP да работат со phpMyAdmin, единствената преостаната задача во овој дел од упатството е експлицитно да ја овозможите наставката mbstring
PHP, што можете да го направите со пишување:
- sudo phpenmod mbstring
Потоа, рестартирајте го Apache за вашите промени да бидат препознаени:
- sudo systemctl restart apache2
phpMyAdmin сега е инсталиран и конфигуриран да работи со Apache. Меѓутоа, пред да можете да се најавите и да започнете да комуницирате со вашите бази на податоци на MySQL, ќе треба да се осигурате дека вашите корисници на MySQL ги имаат привилегиите потребни за интеракција со програмата.
Чекор 2 - Прилагодување на автентикацијата и привилегиите на корисникот
Кога го инсталиравте phpMyAdmin на вашиот сервер, тој автоматски креираше корисник на база на податоци наречена phpmyadmin кој извршува одредени основни процеси за програмата. Наместо да се најавувате како овој корисник со административната лозинка што сте ја поставиле при инсталацијата, се препорачува да се најавите или како ваш root корисник на MySQL или како корисник посветен на управување со бази на податоци преку интерфејсот phpMyAdmin.
Конфигурирање на пристап до лозинка за MySQL Root сметката
Во Ubuntu системите што работат на MySQL 5.7 (и подоцнежните верзии), корисникот на root MySQL е поставен да се автентицира со користење на приклучокот auth_socket
стандардно наместо со лозинка. Ова овозможува поголема безбедност и употребливост во многу случаи, но исто така може да ги комплицира работите кога треба да дозволите надворешна програма - како phpMyAdmin - да пристапи до корисникот.
За да се најавите на phpMyAdmin како ваш root корисник на MySQL, ќе треба да го префрлите неговиот метод за автентикација од auth_socket
на оној што користи лозинка, ако не сте веќе не го направив тоа. За да го направите ова, отворете го барањето за MySQL од вашиот терминал:
- sudo mysql
Следно, проверете кој метод за автентикација го користи секоја од вашите кориснички сметки на MySQL со следнава команда:
- SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | caching_sha2_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | caching_sha2_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
Во овој пример, можете да видите дека корисникот root всушност се автентицира со помош на приклучокот auth_socket
. За да ја конфигурирате сметката root да се автентицира со лозинка, извршете ја следнава команда ALTER USER
. Променете ја лозинка
на силна лозинка по ваш избор:
- ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Забелешка: Претходната изјава ALTER USER
го поставува root корисникот на MySQL да се автентицира со приклучокот caching_sha2_password
. Според официјалната документација на MySQL, caching_sha2_password
е претпочитаниот додаток за автентикација на MySQL, бидејќи обезбедува посигурно шифрирање на лозинка од постарата, но сепак широко користена, mysql_native_password
.
Сепак, некои верзии на PHP не работат сигурно со caching_sha2_password
. PHP објави дека овој проблем е поправен од PHP 7.4, но ако наидете на грешка при обидот да се најавите на phpMyAdmin подоцна, можеби ќе сакате да поставите root да се автентицира со mysql_native_password
наместо тоа:
- ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Потоа, повторно проверете ги методите за автентикација што ги користи секој од вашите корисници за да потврдите дека root веќе не се автентицира со помош на приклучокот auth_socket
:
- SELECT user,authentication_string,plugin,host FROM mysql.user;
Output+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *DE06E242B88EFB1FE4B5083587C260BACB2A6158 | caching_sha2_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | caching_sha2_password | localhost |
| debian-sys-maint | *8486437DE5F65ADC4A4B001CA591363B64746D4C | caching_sha2_password | localhost |
| phpmyadmin | *5FD2B7524254B7F81B32873B1EA6D681503A5CA9 | caching_sha2_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
5 rows in set (0.00 sec)
Од овој излез можете да видите дека корисникот на root ќе се автентицира со помош на лозинка. Сега можете да се најавите на интерфејсот phpMyAdmin како ваш root корисник со лозинката што сте му ја поставиле овде.
Конфигурирање на пристап до лозинка за посветен MySQL корисник
Алтернативно, некои може да откријат дека подобро одговара на нивниот работен тек да се поврзат со phpMyAdmin со посветен корисник. За да го направите ова, отворете ја школката MySQL уште еднаш:
- sudo mysql
Ако имате овозможено автентикација на лозинка за вашиот root корисник, како што е опишано во претходниот дел, ќе треба да ја извршите следнава команда и да ја внесете вашата лозинка кога ќе биде побарано за да се поврзете:
- mysql -u root -p
Оттаму, креирајте нов корисник и дајте му силна лозинка:
- CREATE USER 'sammy'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
Забелешка: Повторно, во зависност од верзијата на PHP што сте ја инсталирале, можеби ќе сакате да го поставите вашиот нов корисник да се автентицира со mysql_native_password
наместо caching_sha2_password
:
- ALTER USER 'sammy'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Потоа, дајте му соодветни привилегии на вашиот нов корисник. На пример, можете да му дадете на корисничките привилегии на сите табели во базата на податоци, како и моќ за додавање, менување и отстранување на кориснички привилегии, со оваа команда:
- GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
После тоа, излезете од школката MySQL:
- exit
Сега можете да пристапите до веб-интерфејсот со посета на името на доменот на вашиот сервер или јавната IP адреса, проследено со /phpmyadmin
:
https://your_domain_or_IP/phpmyadmin
Најавете се на интерфејсот, или како root или со новото корисничко име и лозинка што штотуку ги конфигуриравте.
Кога ќе се најавите, ќе го видите корисничкиот интерфејс, кој ќе изгледа отприлика вака:
Сега кога сте во можност да се поврзете и да комуницирате со phpMyAdmin, сè што треба да направите е да ја зацврстите безбедноста на вашиот систем за да го заштитите од напаѓачи.
Чекор 3 - Обезбедување на вашиот phpMyAdmin пример
Поради својата сеприсутност, phpMyAdmin е популарна цел за напаѓачите и треба да внимавате да спречите неовластен пристап. Еден начин да го направите ова е да поставите порта пред целата апликација со користење на вградените функционалности за автентикација и авторизација .htaccess
на Apache.
За да го направите ова, прво мора да ја овозможите употребата на отфрлања на датотеката .htaccess
со уредување на конфигурациската датотека на Apache на вашата инсталација на phpMyAdmin.
Користете го претпочитаниот уредувач на текст за да ја уредите датотеката phpmyadmin.conf
што е сместена во директориумот за конфигурација на Apache. Овде, ќе користиме nano
:
- sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Додадете директива Allow Override All
во делот
од конфигурациската датотека, вака:
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
AllowOverride All
. . .
Кога ќе ја додадете оваа линија, зачувајте ја и затворете ја датотеката. Ако сте користеле nano
за уредување на датотеката, направете го тоа со притискање CTRL + X
, Y
и потоа ENTER
.
За да ги имплементирате промените што ги направивте, рестартирајте го Apache:
- sudo systemctl restart apache2
Сега кога ја овозможивте употребата на датотеките .htaccess
за вашата апликација, треба да креирате една за навистина да имплементирате одредена безбедност.
За да може ова да биде успешно, датотеката мора да биде креирана во директориумот на апликацијата. Можете да ја креирате потребната датотека и да ја отворите во вашиот уредувач на текст со права на root со внесување:
- sudo nano /usr/share/phpmyadmin/.htaccess
Во оваа датотека, внесете ги следните информации:
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
Еве што значи секоја од овие редови:
AuthType Basic
: оваа линија го одредува типот на автентикација што ја спроведувате. Овој тип ќе имплементира автентикација на лозинка со помош на датотека со лозинка.AuthName
: Ова ја поставува пораката за дијалог прозорецот за автентикација. Треба да го задржите ова генеричко за неовластени корисници да не добијат никакви информации за тоа што е заштитено.AuthUserFile
: Ова ја поставува локацијата на датотеката со лозинка што ќе се користи за автентикација. Ова треба да биде надвор од директориумите што се опслужуваат. Ќе ја создадеме оваа датотека наскоро.Потребен е валиден корисник
: Ова одредува дека само автентицираните корисници треба да имаат пристап до овој ресурс. Ова е она што всушност ги спречува неовластените корисници да влезат.
Кога ќе завршите, зачувајте ја и затворете ја датотеката.
Локацијата што ја избравте за датотеката со лозинка беше /etc/phpmyadmin/.htpasswd
. Сега можете да ја креирате оваа датотека и да ја предадете на почетен корисник со помошната алатка htpasswd
:
- sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
Ќе ви биде побарано да изберете и потврдите лозинка за корисникот што го креирате. Потоа, датотеката се креира со хашираната лозинка што сте ја внеле.
Ако сакате да внесете дополнителен корисник, треба да го сторите тоа без знамето -c
, вака:
- sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Потоа рестартирајте го Apache за да ја ставите автентикацијата .htaccess
во сила:
- sudo systemctl restart apache2
Сега, кога ќе пристапите до вашиот поддиректориум phpMyAdmin, ќе ви биде побарано дополнителното име и лозинка на сметката што штотуку ги конфигуриравте:
https://domain_name_or_IP/phpmyadmin
Откако ќе ја внесете автентикацијата на Apache, ќе бидете префрлени на редовната страница за автентикација на phpMyAdmin за да ги внесете вашите акредитиви на MySQL. Со додавање на дополнителен сет на ингеренциите кои не се MySQL, ја обезбедувате вашата база на податоци дополнителен слој на безбедност. Ова е пожелно, бидејќи phpMyAdmin беше ранлив на безбедносни закани во минатото.
Заклучок
Сега треба да имате конфигуриран phpMyAdmin и подготвен за употреба на вашиот Ubuntu 20.04 сервер. Користејќи го овој интерфејс, можете да креирате бази на податоци, корисници и табели, како и да ги извршувате вообичаените операции како што се бришење и менување структури и податоци.