Choć operacje na bazach danych MySQL (np. kopia zapasowa) często wykonuje z wiersza poleceń, to lubię też czasem sobie uprościć zadanie, i skorzystać z phpMyAdmin. Niedawno pomagałem znajomemu skonfigurować ten skrypt na jego serwerze, bo potrzebował zaimportować naprawdę duży plik, co spotykało się z permanentnym oporem. Oczywiście poradziłem mu by skorzystał z konsoli, ale przy okazji pokazałem pewny “trik”, tak by w przyszłości mógł za pomocą phpMyAdmin importować do bazy pliki już zapisane na serwerze (a ma ich kilka, bo w ramach testów często “żongluje” nimi).

phpMyAdmin: UploadDir i SaveDir

Zazwyczaj import (do) bazy za pomocą phpMyAdmin wygląda tak, że przechodzimy do zakładki “import”, wybieramy z naszego komputera plik i czekamy, aż zostanie zaimportowany. Jeśli plik jest spakowany, to szybciej się przesyła na serwer, ale wymagana jest trochę większa moc obliczeniowa do zaimportowania. Jeśli przesyłamy plik niespakowany, to oczywiście przesyła się dłużej, ale za to wymagania co do zasobów procesora są mniejsze. Przynajmniej w teorii, bo w praktyce to równie z tym bywa…

Do tego mamy jeszcze kilka dodatkowych opcji, jak choćby wznawianie importu w sytuacji, gdy z jakichś przyczyn operacja importu się nie udała. Warto pamiętać o tej opcji zwłaszcza w przypadku hostingów współdzielonych i większych baz danych, bo czasem potrafi to uratować… życie.

U znajomego podczas importu dużego pliku do bazy wyskakiwał taki oto komunikat:

Nie otrzymano żadnych danych do importu. Albo nie dostarczono nazwy pliku, albo jego rozmiar przekroczył rozmiar maksymalny, dozwolony przez twoją konfigurację PHP. Zobacz FAQ 1.16.

Można sobie z tym poradzić, choć z racji tego, że pomagałem zdalnie, i to jeszcze bez dostępu do jego serwera, to moje możliwości były dość ograniczone. Dlatego zaproponowałem, by rozwiązać problem inaczej – uaktywnić w phpMyAdmin możliwość importowania plików bezpośrednio z serwera, ze zdefiniowanego w ustawieniach katalogu. Jako dodatkową zaletę wskazałem fakt, że dzięki temu może mieć tam cały czas dostępną bazę w wersji “wyjściowej”, i jak podczas swoich testów coś “narozrabia”, to nieważne z jakiego komputera urządzenia by korzystał, zawsze będzie mógł ją przywrócić.

W tym celu wystarczy w pliku “config.inc.php” odszukać linijkę:

$cfg['UploadDir'] = '';

i zmienić ją np. na:

$cfg['UploadDir'] = '/ścieżka/na/twoim/serwerze/uploaddir';

Podobnie można zrobić z zapisywaniem (eksportowaniem) plików – można aktywować dodatkową opcję, dzięki której pliki można zapisać bezpośrednio na serwerze. Odpowiada za to opcja:

$cfg['SaveDir'] = '';

Tak wygląda w praktyce opcja importowania z pliku na serwerze:

A tak opcja eksportu do pliku na serwerze:

Przy poprawnie skonfigurowanym serwerze nawet jeśli ktoś postronny odgadłby adres URL do bazy (pliku) znajdującego się na serwerze nie powinien do niego (pliku) otrzymać uprawnienia. Ale dmuchając na zimne warto rozważyć wybranie katalogu poza ścieżką, która dostępna jest z internetu (w poradniku użyłem ścieżki wywnętrz phpMyAdmin dla uproszczenia przykładu) i/lub zablokować dostęp do tego zasobu do wybranych adresów IP, czy wręcz hosta lokalnego (localhost).

 

(!) Zgłoś błąd na stronie | Lub postaw nam kawę :-)
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk