Dokumentacje: Apache 2.2PHP 4/5MySQL 4.0/4.1MySQL 5.0phpMyAdmin
phpMyAdmin 2.5.2-pl1 - Dokumentacja

Dokumentacja phpMyAdmina 2.5.2-pl1


Wymagania

  • PHP3, PHP4 lub PHP5: phpMyAdmin często używa funkcji PHP 'str_replace()', która została dodana w PHP 3.0.6, ale była błędna aż do PHP 3.0.8. A więc nie powinno się uruchamiać tego skryptu przy użyciu PHP3 < 3.0.8.
    PHP musi być także skompilowane z obsługą MySQL;
    Jeśli chcesz wyświetlać miniaturki JPEG-ów w oryginalnych proporcjach, wymagana jest w PHP również obsługa GD2.
  • MySQL (przetestowano wersje 3.21.x, 3.22.x, 3.23.x, 4.0.x i 4.1.x);
    Uwaga: Zaimplementowana obsługa MySQL 4.1.x jest eksperymentalna!
  • przeglądarka (!).

Wprowadzenie

phpMyAdmin potrafi zarządzać całym serwerem MySQL (co wymaga konta superużytkowika), jak również pojedynczą bazą danych. Do realizacji tego ostatniego wymagane jest prawidłowo skonfigurowane konto użytkownika MySQL, który będzie mógł odczytywać/modyfikować tylko określoną bazę danych. Do Ciebie należy odszukanie odpowiedniego fragmentu podręcznika MySQL. Obecnie phpMyAdmin potrafi:

  • tworzyć i usuwać bazy danych
  • tworzyć, kopiować, usuwać, zmieniać nazwy i modyfikować tabele
  • zarządzać tabelami
  • usuwać, edytować i dodawać pola
  • wykonywać dowolne instrukcje SQL, nawet sekwencje zapytań
  • zarządzać indeksami pól
  • wczytywać tekst z plików do tabel
  • tworzyć (*) i wczytywać zrzuty tabel
  • eksportować (*) dane do formatów CSV, XML i Latex
  • administrować wieloma serwerami
  • zarządzać użytkownikami MySQL i ich uprawnieniami
  • sprawdzać spójność powiązań
  • automatycznie łączyć odpowiednie tabele za pomocą zapytania-przez-przykład
  • tworzyć grafikę PDF z planem bazy danych
  • przeszukiwać globalnie bazę danych lub jej część
  • przekształcać składowane dane do dowolnego formatu używając zestawu predefiniowanych funkcji, np. wyświetlać dane BLOB jako obrazek lub link do pobrania lub ...
  • komunikować się w 42 różnych językach

(*)  phpMyAdmin potrafi kompresować (formaty: Zip, GZip -RFC 1952- lub Bzip2) zrzuty i eksporty CSV, jeśli używasz PHP4 >= 4.0.4 z obsługą Zlib (--with-zlib) i/lub obsługą Bzip2 (--with-bz2).


Instalacja

UWAGA: phpMyAdmin nie stosuje żadnych specjalnych mechanizmów bezpieczeństwa jeśli chodzi o serwer MySQL. Przyznanie odpowiednich uprawnień do baz danych MySQL jest ciągle zadaniem administratora. Do tego celu może być użyta strona "Uprawnienia" w phpMyAdminie.

Ostrzeżenie dla użytkowników Maców: jeśli jesteś użytkownikiem MacOS-a w wersji wcześniejszej niż OS X, StuffIt rozpakowuje pliki do formatów Maca.
Tak więc będziesz musiał ponownie zapisać w BBEdit'cie WSZYSTKIE skrypty phpMyAdmina w stylu Uniksa przed wrzuceniem ich na serwer, jako że PHP wydaje się nie lubić znaków końca linii w stylu Maca ("\r").

Ostrzeżenie: kiedy widzisz w tym dokumencie rozszerzenie .php3, proszę potraktować je jako .php, jeśli używasz zestawu z takim właśnie rozszerzeniem.

Szybka instalacja:

  1. Wybierz i pobierz zestaw dystrybucyjny z plikami o rozszerzaniach (.php3 lub .php) zależnych od sposobu, w jaki Twój serwer www/PHP traktuje te rozszerzenia.
  2. Odtaruj lub odzipuj dystrybucję (pamiętaj by odzipować także podkatalogi): wywołaj tar -xzvf phpMyAdmin_x.x.x.tar.gz głównym katalogu dokumentów na swoim serwerze www. Jeśli nie masz bezpośredniego dostępu do tego katalogu, umieść pliki w katalogu na swojej lokalnej maszynie, a następnie, po kroku 3, skopiuj ten katalog na swój serwer www używając, na przykład, ftp.
  3. Otwórz plik config.inc.php3 w swoim ulubionym edytorze i zmień wartości hosta, użytkownika, hasła i trybu uwierzytelniania, tak by pasowały do Twojego środowiska. Tutaj "host" oznacza serwer MySQL. Wprowadź również prawidłową wartość $cfg['PmaAbsoluteUri']. Wszystkie wartości są wyjaśnione w punkcie Konfiguracja.
  4. Zaleca się, by chronić katalog w którym został zainstalowany phpMyAdmin (chyba że jest on w zamkniętym intranecie, lub chciałbyś używać uwierzytelniania HTTP lub cookie), na przykład za pomocą HTTP-AUTH (w pliku .htaccess). Dodatkowe informacje znajdziesz w FAQ.
  5. Otwórz plik <www.twój-host.com>/<twój-katalog-instalacyjny>/index.php3 w przeglądarce. phpMyAdmin powinien wyświetlić ekran powitalny i Twoją bazę danych lub - w przypadku trybu uwierzytelniania HTTP lub cookie - okno logowania .
  6. Cały zestaw nowych funkcji (zapamiętywanie zapytań, komentarze, historia SQL, generowanie PDF-ów) wymaga utworzenia zestawu tabel w bazie danych. Proszę zajrzeć do katalogu scripts/, gdzie powinieneś znaleźć plik o nazwie create_tables.sql. By utworzyć te tabele, możesz już teraz użyć phpMyAdmina. Proszę być świadomym, że utworzenie bazy danych i tabel może wymagać specjalnych uprawnień (uprawnień administratora). Po zaimportowaniu pliku create_tables.sql, powinieneś określić nazwy tabel w pliku config.inc.php3. Dyrektywy użyte w tym celu można znaleźć w punkcie Konfiguracja.

Aktualizacja ze starszej wersji:

  • Proszę nie zastępować nowego config.inc.php3 starszym: ten pierwszy może oferować nowe zmienne konfiguracyjne, a nowe wersje mogą ich wymagać do normalnego działania. Zamiast tego, sugeruje się, by wprowadzić wartości właściwe dla Twojego serwisu do nowego pliku.

Używanie trybów uwierzytelniania:

  • Tryby uwierzytelniania HTTP i cookie są zalecane w środowisku wielu użytkowników, kiedy chcesz dać użytkownikom dostęp do ich własnych baz danych i nie chcesz, żeby sobie nawzajem przeszkadzali.
    Niemniej jednak należy być ostrożnym, gdyż MS Internet Explorer wydaje się być wyjątkowo dziurawym, jeśli chodzi o ciasteczka (cookies), przynajmniej do wersji 6. PHP 4.1.1 jest również w tej dziedzinie trochę dziurawy!
    Nawet w środowisku jednego użytkownika możesz woleć używać trybów HTTP lub cookie, aby nazwa użytkownika/hasło nie były umieszczone w pliku konfiguracyjnym.

  • Tryby uwierzytelniania HTTP i cookie są bezpieczniejsze: hasło MySQL nie musi być przechowywane z pliku konfiguracyjnym phpMyAdmina (z wyjątkiem "controlusera" - patrz punkt Konfiguracja).
    Z drugiej strony, należy pamiętać, że hasło - jeżeli nie używasz protokołu HTTPS - jest przesyłane czystym tekstem.
    W trybie cookie hasło, zakodowane algorytmem blowfish, jest przechowywane w tymczasowym ciasteczku.

  • W trybach 'HTTP' i 'cookie' phpMyAdmin wymaga controlusera, który ma tylko uprawnienia SELECT do tabel mysql.user (wszystkie pola z wyjątkiem "Password"), mysql.db (wszystkie pola) i mysql.tables_priv (wszystkie pola z wyjątkiem "Grantor" i "Timestamp") .
    Musisz określić szczegółowe informacje na temat controlusera w pliku config.inc.php3, ustawiając opcje $cfg['Servers'][$i]['controluser'] i $cfg['Servers'][$i]['controlpass'].
    W następującym przykładzie założyliśmy, że chcesz użyć pma jako controlusera i pmapass jako controlpass (jego hasło), ale to tylko przykład: użyj czegoś innego w swoim pliku!
    Oczywiście musisz zamienić localhost na nazwę hosta serwera WWW, jeśli nie jest taki sam jak serwera MySQL.
    GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';
    GRANT SELECT (
        Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
        Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
        File_priv, Grant_priv, References_priv, Index_priv, Alter_priv,
        Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv,
        Execute_priv, Repl_slave_priv, Repl_client_priv
        ) ON mysql.user TO 'pma'@'localhost';
    GRANT SELECT ON mysql.db TO 'pma'@'localhost';
    GRANT SELECT ON mysql.host TO 'pma'@'localhost';
    GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv)
        ON mysql.tables_priv TO 'pma'@'localhost';
            
    Jeśli używasz starszej wersji MySQL-a (poniżej 4.0.2), użyj tego zapytania:
    GRANT SELECT (
        Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv,
        Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv,
        File_priv, Grant_priv, References_priv, Index_priv, Alter_priv
        ) ON mysql.user TO 'pma'@'localhost';
            
    ... a jeśli chcesz używać wielu nowych funkcji relacyjnych i móc zapamiętywać zapytania SQL:
    GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
            
    (to oczywiście wymaga posiadania specjalnej bazy danych dla phpMyAdmina, co zostanie wyjaśnione dalej)
    Oczywiście, powyższe zapytania działają tylko jeśli Twoja wersja MySQL-a obsługuje polecenie GRANT. Jest tak w przypadku wersji 3.22.11 i następnych.
  • Każdy z prawdziwych użytkowników powinien uzyskać uprawnienia do poszczególnych pojedynczych baz danych. Zwykle nie powinieneś dawać uprawnień globalnych zwykłemu użytkownikowi, chyba że zdajesz sobie sprawę ze skutków takich uprawnień (np. tworzysz superużytkownika).
    Na przykład by nadać użytkownikowi prawdziwy_uzytkownik wszystkie uprawnienia do bazy danych baza_uzytkownika:
       GRANT ALL PRIVILEGES ON baza_uzytkownika.* TO 'prawdziwy_uzytkownik'@localhost IDENTIFIED BY 'prawdziwe_haslo';
    To, co może on teraz zrobić jest całkowicie kontrolowane przez system zarządzania użytkownikami MySQL.
    W trybach uwierzytelniania HTTP lub cookie nie trzeba wypełniać pól user/password tablicy $cfg['Servers'].

tryb uwierzytelniania 'http':

  • W wersjach wcześniejszych niż 2.2.3. był nazywany 'advanced'.
  • Wprowadzony w wersji 1.3.0, używa prostego uwierzytelniania HTTP i pozwala zalogować się jako dowolny prawidłowy użytkownik MySQL.
  • Jest obsługiwany jedynie gdy PHP działa jako moduł Apache'a, nie jako CGI.

tryb uwierzytelniania 'cookie':

  • Możesz użyć tej metody jako zamiennik uwierzytelniania HTTP (na przykład jeśli używasz IIS-a).
  • Oczywiście użytkownik musi mieć w swojej przeglądarce włączone ciasteczka (cookies).
  • W tym trybie użytkownik może faktycznie wylogować się z phpMyAdmina i zalogować się z powrotem z taką samą nazwą użytkownika.

tryb uwierzytelniania 'config':

  • Ten tryb jest mniej bezpieczny, ponieważ wymaga wypełniania pól $cfg['Servers'][$i]['user'] i $cfg['Servers'][$i]['password'].
    Nie musisz jednak ustawiać "controlusera": użycie $cfg['Servers'][$i]['only_db'] powinno wystarczyć.
  • W części ISP FAQ zostało wyjaśnione jak chronić Twój plik konfiguracyjny.
  • Dla dodatkowego bezpieczeństwa w tym trybie, możesz rozważyć uwierzytelnianiu w oparciu o hosty: dyrektywy konfiguracyjne $cfg['Servers'][$i]['AllowDeny']['order'] i $cfg['Servers'][$i]['AllowDeny']['rules'].

Konfiguracja

Ostrzeżenie dla użytkowników Maców: wygląda na to, że PHP nie lubi Macowych znaków końca linii ("\r"). Upewnij się więc, że wybrałeś w swoim edytorze tekstu opcję umożliwiającą używanie uniksowych znaków końca linii ("\n") przed zapisaniem skryptu, który zmodyfikowałeś.

Wszystkie dane konfiguracyjne są umieszczone w pliku config.inc.php3.

$cfg['PmaAbsoluteUri'] napis
Kompletny URL (z pełną ścieżką) do Twojej wersji phpMyAdmina. Np. http://www.twoje_www.net.pl/sciezka_do_katalogu_z_twoim_phpMyAdminem/.

phpMyAdmin potrzebuje tego ustawienia z powodu wymagań protokołu HTTP, co zostało wyjaśnione w punkcie 14.30 RFC2616.

Nie zapomnij o ukośniku na końcu URL-a. Musi się on składać się ze znaków, które dla URL-a są poprawne, a na niektórych serwerach w ścieżce należy uwzględnić wielkość liter.

Począwszy od wersji 2.3.0, parametr ten może pozostać pusty, gdyż program próbuje automatycznie wykryć jego właściwą wartość. Dodatkowe informacje można znaleźć w pliku konfiguracyjnym.

Można także ustalać to ustawienie dynamicznie. Na przykład możesz spróbować użyć kodu w rodzaju:
$cfg['PmaAbsoluteUri'] = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://'
                       . $_SERVER['HTTP_HOST']
                       . (!empty($_SERVER['SERVER_PORT']) ? ':' . $_SERVER['SERVER_PORT'] : '')
                       . substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '/')+1);

    lub

$cfg['PmaAbsoluteUri'] = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://'
                       . $_SERVER['SERVER_NAME']
                       . (!empty($_SERVER['SERVER_PORT']) ? ':' . $_SERVER['SERVER_PORT'] : '')
                       . substr($_SERVER['SCRIPT_NAME'], 0, strrpos($_SERVER['SCRIPT_NAME'], '/')+1);
        
Proszę zauważyć, że tablica $_SERVER nie istnieje w PHP < 4.1.0. W takim wypadku trzeba spróbować zastąpić $_SERVER przez $HTTP_SERVER_VARS lub $GLOBALS.

$cfg['PmaAbsoluteUri_DisableWarning'] wartość logiczna
Domyślnie, gdy $cfg['PmaAbsoluteUri'] jest zostawiony pusty i system wykrywa Twój absolutny URI, wyświetlane jest na ten temat ostrzeżenie. Jeżeli przetestowałeś automatyczne wykrywanie i działa idealnie dla Twoich ustawień, możesz ustawić tę zmienną by uciszyć ostrzeżenie.

$cfg['PmaNoRelation_DisableWarning'] wartość logiczna
Począwszy od wersji 2.3.0 phpMyAdmin oferuje wiele funkcji pracujących z głównymi / zewnętrznymi tabelami (patrz $cfg['Servers'][$i]['pmadb']).
Jeśli próbowałeś ustawiać ten parametr i nadal nie działa, spójrz na stronę "Struktura" bazy danych, gdzie chciałbyś ich użyć. Znajdziesz tam link, który przeanalizuje, dlaczego funkcje te są nieaktywne.
Jeżeli nie chcesz ich używać, ustaw tę zmienną na TRUE, a komunikat przestanie się pojawiać.

$cfg['blowfish_secret'] napis
Począwszy od wersji 2.5.2 typ uwierzytelniania 'cookie' używa algorytmu blowfish do zakodowania hasła.
Jeśli przynajmniej jedna konfiguracja serwera używa typu 'cookie', wprowadź tutaj frazę kodującą (passphrase), której będzie używał blowfish.
$cfg['Servers'] tablica
Od wersji 1.4.2 phpMyAdmin obsługuję administrację wieloma serwerami MySQL. Z tego powodu została dodana tablica $cfg['Servers'], która zawiera dane dotyczące logowania się na różne serwery. Pierwszy wpis $cfg['Servers'][$i]['host'] zawiera nazwę hosta pierwszego serwera, drugi wpis $cfg['Servers'][$i]['host'] nazwę hosta drugiego serwera, itd. Jeżeli masz tylko jeden serwer do administracji, pozostaw nazwę hosta z innych wpisów $cfg['Server'] pustą.

$cfg['Servers'][$i]['host'] napis
Nazwa hosta $i-tego serwera MySQL. Np. localhost.

$cfg['Servers'][$i]['port'] napis
Numer portu Twojego $i-tego serwera MySQL. Domyślnie 3306 (pozostaw puste). Jeśli używasz "localhost" jako nazwy hosta, MySQL ignoruje numer portu i łączy się z gniazdem, więc jeśli chcesz połączyć się z innymi niż domyślnym portem, w $cfg['Servers'][$i]['host'] użyj "127.0.0.1" lub faktycznej nazwy hosta.

$cfg['Servers'][$i]['socket'] napis
Ścieżka do gniazda, którego należy użyć. Pozostawione puste oznacza wartość domyślną.
By użyć funkcji gniazd niezbędny jest PHP w wersji co najmniej 3.0.10.

$cfg['Servers'][$i]['connect_type'] napis
Jakiego rodzaju połączenia z serwerem MySQL użyć. Do wyboru jest: 'socket' i 'tcp'. Domyślna wartość to 'tcp', gdyż jest niemal pewnie dostępna dla wszystkich serwerów MySQL, podczas gdy gniazda nie są obsługiwane na niektórych platformach.

Aby użyć trybu gniazda, Twój serwer MySQL musi być na tej samej maszynie co serwer www.

$cfg['Servers'][$i]['compress'] wartość logiczna
Czy używać protokołu kompresji dla połączeń z serwerem MySQL, czy też nie (opcja eksperymentalna).
Funkcja ta wymaga PHP >= 4.3.0.
$cfg['Servers'][$i]['controluser'] napis
$cfg['Servers'][$i]['controlpass'] napis
Kiedy używane są tryby uwierzytelniania HTTP lub cookie (albo trybu uwierzytelniania 'config' od wersji 2.2.1 phpMyAdmina), musisz dostarczyć szczegółów konta MySQL, które ma uprawnienie SELECT dla tabel mysql.user (wszystkie kolumny oprócz "Password"), mysql.db (wszystkie kolumny) & mysql.tables_priv (wszystkie kolumny z wyjątkiem "Grantor" i "Timestamp") . Konto to jest używane do sprawdzenia, które bazy danych będzie widział użytkownik po zalogowaniu.
Więcej informacji znajdziesz w punkcie Instalacja, temat: "Używanie uwierzytelniania HTTP".

Zauważ, że jeśli spróbujesz zalogować się do phpMyAdmina jako tenże "controluser", możesz dostać różne błędy, w zależności od faktycznych uprawnień, jakie dałeś "controluserowi". phpMyAdmin nie obsługuje bezpośredniego logowania się jako "controluser".

W wersjach przed 2.25 zmienne te miały nazwy "stduser/stdpass".

$cfg['Servers'][$i]['auth_type'] napis ['http'|'cookie'|'config']
Jaki tryb uwierzytelniania powinien zostać użyty dla serwera: config, cookie czy HTTP.
  • uwierzytelnianie 'config' ($auth_type = 'config') to zwykły, stary sposób: nazwa użytkownika i hasło są przechowywane w config.inc.php3.
  • tryb uwierzytelniania 'cookie' ($auth_type = 'cookie'), wprowadzony w wersji 2.2.3, pozwala zalogować się jako dowolny prawidłowy użytkownik MySQL za pomocą... ciasteczek (cookies). Nazwa użytkownika i hasło są przechowywane w ciasteczkach (cookies) podczas trwania sesji, a hasło jest kasowane, kiedy sesja się kończy.
  • uwierzytelnianie 'http' (we wcześniejszych wersjach nazywane 'advanced') ($auth_type = 'http'), wprowadzone w wersji 1.3.0, pozwala zalogować się jako dowolny prawidłowy użytkownik MySQL poprzez uwierzytelnianie na poziomie protokołu HTTP.

Więcej informacji znajdziesz w punkcie Instalacja, temat "Używanie trybów uwierzytelniania".

$cfg['Servers'][$i]['user'] napis
$cfg['Servers'][$i]['password'] napis
Para nazwa-użytkownika/hasło, których phpMyAdmin użyje, by połączyć się do serwera MySQL. Taka para nie jest potrzebna, kiedy używany jest tryb uwierzytelniania HTTP lub cookie - i wtedy powinna być pusta.

$cfg['Servers'][$i]['only_db'] tablica napisów
Jeśli jest ustawione na nazwę bazy danych (tablicę nazw baz danych), jedynie ta baza danych będzie (te bazy danych będą) pokazane użytkownikowi. Począwszy od phpMyAdmina 2.2.1, nazwy baz danych mogą zawierać symbole wieloznaczne MySQL-a ("_" i "%"): jeśli chcesz użyć dosłownych znaczeń tych znaków, poprzedź je odwrotnym ukośnikiem (tj. użyć 'my\_db', a nie 'my_db').
To ustawienie to wydajny sposób, by zmniejszyć obciążenie serwera, nie wymaga bowiem, wysyłania do serwera MySQL żądań w celu zbudowania dostępnej listy baz danych. Ale nie jest zamiennikiem reguł uprawnień serwera MySQL. Ustawienie zmiennej oznacza jedynie, że bazy danych nie będą wyświetlane, ale bynajmniej nie, że nie mogą być używane.

Oto przykład użycia więcej niż jednej bazy danych: $cfg['Servers'][$i]['only_db'] = array('db1', 'db2');
$cfg['Servers'][$i]['verbose'] napis
Użyteczne jedynie w phpMyAdminie obsługującym wiele serwerów. Jeśli ustawione, napis ten będzie wyświetlany zamiast nazwy hosta w rozwijalnym menu na stronie głównej. Może to być użytecze, np. jeśli chcesz pokazać jedynie niektóre bazy danych.


$cfg['Servers'][$i]['pmadb'] napis
Począwszy od wersji 2.3.0 phpMyAdmin oferuje wiele funkcji pracujących z głównymi / zewnętrznymi tabelami. Aby ich użyć, podobnie jak przy zapamiętywaniu zapytań, niezbędna jest specjalna tabela o strukturze wyjaśnionej poniżej.
Jeśli jesteś jedynym użytkownikiem tej instalacji phpMyAdmina, możesz użyć swojej aktualnej bazy danych do przechowywania takich specjalnych tabel; w takim przypadku po prostu umieść nazwę aktualnej bazy danych w $cfg['Servers'][$i]['pmadb'].

Jeśli konfigurujesz instalację phpMyAdmina przeznaczoną dla wielu użytkowników, będziesz musiał stworzyć nową bazę danych i nadać specjalne uprawnienia, tak więc, jako superużytkownik:

  • stwórz nową bazę danych dla phpMyAdmina:
      CREATE DATABASE phpmyadmin;
    Zauważ, że "controluser" musi mieć uprawnienia SELECT, INSERT, UPDATE i DELETE do tej bazy danych. Oto zapytanie, które nada te uprawnienia (używając "phpmyadmin" jako nazwy bazy danych i "pma" jako controlusera):
      GRANT SELECT,INSERT,UPDATE,DELETE ON phpmyadmin.* to 'pma'@'localhost';
    nie dawaj żadnym innym użytkowników praw dostępu do tej bazy danych.
  • wprowadź nazwę bazy danych do $cfg['Servers'][$i]['pmadb']


$cfg['Servers'][$i]['bookmarktable'] napis
Począwszy od wersji 2.2.0 phpMyAdmin pozwala zapamiętywać zapytania. Może to być użyteczne w przypadku zapytań, których często używasz.

Aby móc używać tej funkcji, musisz:
  • ustawić "pmadb", jak zostało wyjaśnione powyżej
  • w obrębie tej bazy danych stworzyć tabelę wg poniższego schematu:
         CREATE TABLE `PMA_bookmark` (
           id int(11) DEFAULT '0' NOT NULL auto_increment,
           dbase varchar(255) NOT NULL,
           user varchar(255) NOT NULL,
           label varchar(255) NOT NULL,
           query text NOT NULL,
           PRIMARY KEY (id)
         ) TYPE=MyISAM COMMENT='Zapamiętane zapytania';
  • wprowadzić nazwę tabeli do $cfg['Servers'][$i]['bookmarktable']


$cfg['Servers'][$i]['relation'] napis
Począwszy do wersji 2.2.4 możesz opisać, w specjalnej tabeli 'relation', które pole jest kluczem innej tabeli (klucz zewnętrzny). phpMyAdmin aktualnie używa tej informacji w celu
  • stworzenia klikalnymi, gdy przeglądasz główną tabelę, wartości danych, które wskazują na tabelę zewnętrzną;
  • w czasie przeglądania tabeli głównej - pokazania w opcjonalnej etykietce narzędzia "wyświetlanego pola", gdy przeniesiesz mysz na kolumnę zawierającą klucz zewnętrzny (używana jest również tabela 'table_info');
    (zobacz FAQ 6.7)
  • pokazania rozwijalnej listy możliwych kluczy zewnętrznych w trybie edycji/wstawiania (pokazywane są: wartość klucza i "wyświetlane pole")
    (zobacz FAQ 6.21)
  • wyświetlenia linków na stronie z właściwościami tabeli, by sprawdzić spójność powiązań (wskazanie brakujących kluczy zewnętrznych) dla każdego opisanego klucza;
  • w "zapytaniu przez przykład" - automatycznego tworzenia złączeń (zobacz FAQ 6.6)
  • umożliwienia otrzymania schematu PDF bazy danych (używana jest również tabela 'table_coords').

Klucze mogą być liczbowe lub znakowe.

Aby umożliwić korzystanie z tej funkcji, superużytkownik musi:
  • ustawić "pmadb", jak zostało wyjaśnione powyżej
  • w obrębie tej bazy danych stworzyć tabelę według poniższego schematu:
         CREATE TABLE `PMA_relation` (
           `master_db` varchar(64) NOT NULL default '',
           `master_table` varchar(64) NOT NULL default '',
           `master_field` varchar(64) NOT NULL default '',
           `foreign_db` varchar(64) NOT NULL default '',
           `foreign_table` varchar(64) NOT NULL default '',
           `foreign_field` varchar(64) NOT NULL default '',
           PRIMARY KEY (`master_db`, `master_table`, `master_field`),
           KEY foreign_field (foreign_db, foreign_table)
         ) TYPE=MyISAM COMMENT='Tabela relacji';
  • umieścić nazwę tabeli relacji w $cfg['Servers'][$i]['relation']
  • teraz jako normalny użytkownik otwórz phpMyAdmina i dla każdej z twoich normalnych tabel, dla których chcesz używać tej funkcji, kliknij na "Struktura/Widok relacyjny/" i wybierz pola zewnętrzne.

Proszę zauważyć, że w aktualnej (2.3.0) wersji master_db musi być identyczne z foreign_db. Pola te zostały utworzone na potrzeby przyszłego rozwoju relacji między bazami danych.


$cfg['Servers'][$i]['table_info'] napis
Od wersji 2.3.0 możesz w specjalnej tabeli 'table_info' opisać, które pole ma być wyświetlane jako etykieta narzędzia podczas przenoszenia kursora nad odpowiadającym jej kluczem.
Zmienna ta będzie przechowywać nazwę tabeli. Aby pozwolić na użycie tej funkcji superużytkownik musi:
  • ustawić "pmadb", jak zostało wyjaśnione powyżej
  • w obrębie tej bazy danych stworzyć tabelę wg poniższego schematu:
         CREATE TABLE `PMA_table_info` (
           `db_name` varchar(64) NOT NULL default '',
           `table_name` varchar(64) NOT NULL default '',
           `display_field` varchar(64) NOT NULL default '',
           PRIMARY KEY (`db_name`, `table_name`)
         ) TYPE=MyISAM COMMENT='Informacje o tabelach dla phpMyAdmina';
  • umieścić nazwę tabeli w $cfg['Servers'][$i]['table_info']
  • następnie dla każdej tabeli, gdzie chcesz użyj tej funkcji, kliknij "Struktura/Widok relacyjny/Wybierz wyświetlane pole", aby wybrać pole.

Praktyczne wskazówki: Wyświetlane pole.


$cfg['Servers'][$i]['table_coords'] napis
$cfg['Servers'][$i]['pdf_pages'] napis
Od wydania 2.3.0 możesz użyć phpMyAdmina do tworzenia stron PDF pokazujących relacje w twoich tabelach. Aby to zrobić, potrzebne są dwie tabele: "pdf_pages" (zawierającą informacje o dostępnych stronach PDF) i "table_coords" (zawierających określenia miejsc, w jakich będą położone na schemacie).

Aby stworzyć schemat PDF musisz używać funkcji "relacji" i mieć tabelę stron PDF (patrz $cfg['Servers'][$i]['pdf_pages']).

Aby umożliwiść korzystanie z tej funkcji superużytkownik musi:
  • ustawić "pmadb", jak zostało wyjaśnione powyżej
  • w obrębie tej bazy danych stworzyć tabelę wg poniższego schematu:
         CREATE TABLE `PMA_table_coords` (
           `db_name` varchar(64) NOT NULL default '',
           `table_name` varchar(64) NOT NULL default '',
           `pdf_page_number` int NOT NULL default '0',
           `x` float unsigned NOT NULL default '0',
           `y` float unsigned NOT NULL default '0',
           PRIMARY KEY (`db_name`, `table_name`, `pdf_page_number`)
         ) TYPE=MyISAM COMMENT='Współrzędne tabeli dla PDF-ów phpMyAdmina';
  • również w obrębie tej bazy danych stworzyć:
         CREATE TABLE `PMA_pdf_pages` (
           `db_name` varchar(64) NOT NULL default '',
           `page_nr` int(10) unsigned NOT NULL auto_increment,
           `page_descr` varchar(50) NOT NULL default '',
           PRIMARY KEY (page_nr),
           KEY (db_name)
         ) TYPE=MyISAM COMMENT='Strony relacji PDF dla PMA';
  • umieścić nazwę pierwszej tabeli w $cfg['Servers'][$i]['table_coords'], a drugiej w $cfg['Servers'][$i]['pdf_pages']

Praktyczne wskazówki: Schemat PDF.


$cfg['Servers'][$i]['column_info'] napis
Od wersji 2.3.0 możesz przechowywać komentarze opisujące każdą kolumnę dowolnej tabeli. Będzie to pokazane w "widoku do wydruku".

Począwszy od wersji 2.5.0 komentarze są konsekwentnie używane na stronach właściwości tabeli i w widoku przeglądania, pokazywane jako etykieta narzędzia przy nazwie kolumny (strona właściwości) lub osadzone w nagłówku tabeli w widoku przeglądania. Mogą być również pokazywane w zrzucie tabeli. Proszę zobaczyć później odpowiednie dyrektywy konfiguracji.

Nowością w wersji 2.5.0 jest również system transformacji MIME, który także bazuje na poniższej strukturze. Dalsze informacje można znaleźć w części Transformacje. By użyć systemu transformacji MIME, tabela column_info musi mieć trzy dodatkowe pola: 'mimetype', 'transformation' i 'transformation_options'.

Aby umożliwić korzystanie z tej funkcji superużytkownik musi:
  • ustawić "pmadb", jak zostało wyjaśnione powyżej
  • w obrębie tej bazy danych stworzyć tabelę według poniższego schematu:
         CREATE TABLE `PMA_column_info` (
           id int(5) unsigned NOT NULL auto_increment,
           db_name varchar(64) NOT NULL default '',
           table_name varchar(64) NOT NULL default '',
           column_name varchar(64) NOT NULL default '',
           `comment` varchar(255) NOT NULL default '',
           mimetype varchar(255) NOT NULL default '',
           transformation varchar(255) NOT NULL default '',
           transformation_options varchar(255) NOT NULL default '',
           PRIMARY KEY (id),
           UNIQUE KEY db_name (db_name, table_name, column_name)
         ) TYPE=MyISAM COMMENT='Komentarze dla kolumn';
  • umieścić nazwę tabeli w $cfg['Servers'][$i]['column_info']
  • Aby zaktualizować tabelę column_comments sprzed 2.5.0, użyj tego:
         ALTER TABLE `PMA_column_comments`
           ADD `mimetype` VARCHAR( 255 ) NOT NULL ,
           ADD `transformation` VARCHAR( 255 ) NOT NULL ,
           ADD `transformation_options` VARCHAR( 255 ) NOT NULL ;
    i pamiętaj, że w config.inc.php zmienna zmieniła nazwę z
    $cfg['Servers'][$i]['column_comments'] na $cfg['Servers'][$i]['column_info']


$cfg['Servers'][$i]['history'] napis
Od wersji 2.5.0 możesz zapamiętywać historię SQL, czyli wszystkie zapytania wpisane ręcznie w phpMyAdminie. Jeżeli nie chcesz używać historii opartej na tabelach, możesz użyć historii opartej na JavaScript'cie. Użycie jej oznacza, że cała historia zostanie skasowana przy zamknięciu okna.

Używając $cfg['QueryHistoryMax'] możesz określić liczbę pozycji historii, które chcesz przetrzymywać. Przy każdym zalogowaniu lista ta zostanie przycięta do maksymalnej liczby.

Historia zapytań jest dostępna tylko gdy używane jest okno zapytań oparte na JavaScript'cie, zobacz $cfg['QueryFrame'].

Aby umożliwić korzystanie z tej funkcji, superużytkownik musi:
  • ustawić "pmadb", jak zostało wyjaśnione powyżej
  • w obrębie tej bazy danych stworzyć tabelę według poniższego schematu:
         CREATE TABLE `PMA_history` (
           `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
           `username` VARCHAR( 64 ) NOT NULL ,
           `db` VARCHAR( 64 ) NOT NULL ,
           `table` VARCHAR( 64 ) NOT NULL ,
           `timevalue` TIMESTAMP NOT NULL ,
           `sqlquery` TEXT NOT NULL ,
           PRIMARY KEY ( `id` ) ,
           INDEX ( `username` , `db` , `table` , `timevalue` )
           ) TYPE=MyISAM COMMENT='Historia SQL';
  • umieścić nazwę tabeli w $cfg['Servers'][$i]['history']


$cfg['Servers'][$i]['verbose_check'] napis
Ponieważ w wersji 2.5.0 wprowadzono obsługę transformacji MIME, tabela column_info została rozszerzona o trzy nowe pola. Jeśli zmienna ta ustawiona jest na TRUE (domyślnie) phpMyAdmin sprawdzi, czy najnowsza struktura jest dostępna. Jeśli nie, da superużytkownikowi ostrzeżenie.

Możesz wyłączyć sprawdzanie, ustawiając zmienną na FALSE, co powinno zaowocować poprawą wydajności.

Gdy jest pewne, że struktura tabeli jest aktualna, zalecane jest ustawienie na FALSE.

$cfg['Servers'][$i]['AllowDeny']['order'] napis
Jeśli porządek reguł jest pusty, uwierzytelnianie IP jest nieaktywne.

Jeśli Twój porządek reguł jest ustawiony na 'deny,allow', system stosuje wszystkie reguły negatywne (zabraniające) przed regułami pozytywnymi (zezwalającymi). Zezwolenie na dostęp jest domyślne. Dowolny klient, który nie pasuje do żadnego polecenia Deny lub pasuje do któregoś polecenia Allow, zyska dostęp do serwera.

Jeśli jest ustawiony na 'allow,deny', system stosuje wszystkie reguły pozytywne przed regułami negatywnymi. Dostęp jest domyślnie zabroniony. Dowolny klient, które nie pasuje do żadnego polecenia Allow lub pasuje do jakiegoś polecenia Deny, nie zyska dostępu do serwera.

Jeżeli jest ustawiony na 'explicit', uwierzytelnianie jest przeprowadzane w podobny sposób jak przy porządku 'deny,allow', z tym ograniczeniem, że jeśli kombinacja host/nazwa-użytkownika musi być i wymieniona wśród reguł pozytywnych i nie wymieniona wśród reguł negatywnych. Jest to najbezpieczniejszy sposób używania reguł Allow/Deny, dostępny w Apache'u poprzez określenie reguł pozytywnych i negatywnych bez ustawiania żadnego porządku.

$cfg['Servers'][$i]['AllowDeny']['rules'] tablica napisów
Ogólny format reguł jest następujący:
      <'allow' | 'deny'> <nazwa-użytkownika> [from] <maska-ip>

Aby reguła pasowała do wszystkich użytkowników, można w polu nazwa-użytkownika jako symbolu wieloznacznego użyć znaku '%'.
Istnieje kilka skrótów, których możesz zastępczo użyć w polu maska-ip:
     'all' -> 0.0.0.0/0
     'localhost' -> 127.0.0.1/8


Pusta lista reguł jest równoważna albo użyciu 'allow % from all', jeśli Twój porządek reguł jest ustawiony na 'deny,allow', albo 'deny % from all', jeśli Twój porządek reguł ustawiony jest na 'allow,deny' lub 'explicit'.

W systemie dopasowywania IP działają:
xxx.xxx.xxx.xxx (dokładny adres IP)
xxx.xxx.xxx.[yyy-zzz] (zakres adresów IP)
xxx.xxx.xxx.xxx/nn (CIDR, adresy IP typu Classless Inter-Domain Routing)
To natomiast nie zadziała:
xxx.xxx.xxx.xx[yyy-zzz] (częściowy zakres adresów IP)

$cfg['ServerDefault'] liczba całkowita
Jeżeli masz skonfigurowany więcej niż jeden serwer, możesz ustawić $cfg['ServerDefault'] na jeden z nich, by połączyć się automatycznie z tym serwerem przy starcie phpMyAdmina, albo na 0, żeby dostać listę serwerów bez logowania się.
Jeżeli tylko jeden serwer jest skonfigurowany, $cfg['ServerDefault'] MUSI wskazywać na ten serwer.

$cfg['OBGzip'] napis/wartość logiczna
Określa, czy używać buforowania wyjścia poprzez GZip, co zwiększa szybkość transferu HTTP.
Ustaw na true/false by włączyć/wyłączyć. Przy ustawieniu na 'auto' (napis), phpMyAdmin próbuje włączyć buforowanie wyjścia i automatycznie je wyłączy, jeżeli przeglądarka ma jakieś problemy z buforowaniem. IE6 z określoną łatą jest znany z powodowania uszkodzeń danych przy włączonym buforowaniu.

$cfg['PersistentConnections'] wartość logiczna
Czy używać połączeń trwałych, czy też nie (mysql_connect czy mysql_pconnect).

$cfg['ExecTimeLimit'] liczba całkowita [liczba sekund]
Liczba sekund, w czasie których może działać skrypt. Jeżeli jest ustawione na na zero, żadne ograniczenia nie są nakładane.
Ustawienie to jest używane w czasie importu/eksportu plików zrzutów, ale nie ma żadnych skutków, gdy PHP jest uruchomiony w trybie bezpiecznym.

$cfg['SkipLockedTables'] wartość logiczna
Zaznacz używane bazy danych i umożliw wyświetlanie baz danych z zablokowanymi tabelami (od 3.23.30).

$cfg['ShowSQL'] wartość logiczna
Określa czy zapytania SQL generowane przez phpMyAdmina powinny być pokazywane, czy też nie.

$cfg['AllowUserDropDatabase'] wartość logiczna
Określa, czy zwykli użytkownicy (nieadministratorzy) mają możliwość usunięcia ich własnej bazy danych, czy też nie. Jeżeli jest ustawione na FALSE, link "Usunięcie bazy danych" nie będzie pokazywany, a nawet "DROP DATABASE mojabaza" zostanie odrzucone. Całkiem użyteczne dla usługodawców internetowych z dużą liczbą klientów.

$cfg['Confirm'] wartość logiczna
Czy ostrzeżenie ("Czy na pewno chcesz to zrobić?") powinno być wyświetlane, gdy istnieje ryzyko utraty danych.

$cfg['LoginCookieRecall'] wartość logiczna
Określa, czy poprzedni login powinien być ponownie przywołany w trybie uwierzytelniania cookie, czy też nie.

$cfg['UseDbSearch'] wartość logiczna
Określa, czy "szukanie tekstu wewnątrz bazy danych" jest włączone, czy też nie.

$cfg['LeftFrameLight'] wartość logiczna
Określa, czy używać menu wyboru i wyświetlać jedynie aktualne tabele w lewej ramce (mniejsza strona). Tylko w trybie nie-lekkim (tj. z wyłączoną opcją) można zastosować tę funkcję do wyświetlania zagnieżdżonych folderów przy użyciu $cfg['LeftFrameTableSeparator']

$cfg['LeftFrameTableSeparator'] napis
Określa napis używany do zagnieżdżania odstępów tabel. Domyślnie '__'. Oznacza to, że jeśli masz tabelę o nazwie w rodzaju 'raz__dwa__trzy', zostanie to pokazane jako trójstopniowa hierarchia w rodzaju: raz > dwa > trzy. Ustawienie na FALSE lub pusty napis wyłącza funkcję. Uwaga: Nie powinieneś używać tego separatora na początku nazwy tabeli lub na jej końcu albo wielokrotnie bez żadnego innego znaku pomiędzy separatorami.

$cfg['LeftFrameTableLevel'] napis
Określa, jak wiele podpoziomów ma być wyświetlanych podczas podziału tabel przez powyższy separator.

$cfg['ShowTooltip'] wartość logiczna
Określa, czy komentarz tabeli ma być wyświetlany jako etykieta narzędzia w lewej ramce, czy też nie.

$cfg['ShowTooltipAliasDB'] wartość logiczna
Jeżeli etykiety narzędzia są włączone a komentarz bazy danych ustawiony, zamieni to miejscami komentarz i prawdziwą nazwę. Oznacza to, że jeśli nazwałeś tabelę 'user0001' i dodasz do niej komentarz 'MojaNazwa', zobaczysz użytą wszędzie w lewej ramce nazwę 'MojaNazwa', a etykieta narzędzia pokaże prawdziwą nazwę bazy danych.

$cfg['ShowTooltipAliasTB'] wartość logiczna
To samo co $cfg['ShowTooltipAliasDB'], tylko że dotyczy nazw tabel.

$cfg['ShowStats'] wartość logiczna
Określa, czy wyświetlać zużycie miejsca i statystyki na temat baz danych i tabel, czy też nie.
Warto zauważyć, że statystyki wymagają MySQL-a w wersji przynajmniej 3.23.3 oraz że, jak dotąd, MySQL nie podaje takich informacji dla tabel Berkeley DB.

$cfg['ShowMysqlInfo'] wartość logiczna
$cfg['ShowMysqlVars'] wartość logiczna
$cfg['ShowPhpInfo'] wartość logiczna
$cfg['ShowChgPassword'] wartość logiczna
Określa, czy dla zwykłych użytkowników wyświetlać linki "Informacje o stanie serwera MySQL", "Zmienne systemowe serwera MySQL", "Informacje o PHP" i "Zmiana hasła" w (prawej) ramce początkowej. Ustawienie to nie sprawdza poleceń MySQL wprowadzonych bezpośrednio.

Proszę zauważyć, że aby zablokować możliwość użycia phpinfo() w skryptach, musisz umieścić w twoim pliku php.ini co następuje:
    disable_functions = phpinfo()

Proszę również zauważyć, że aktywacja linku do "Zmiany hasła" nie ma żadnych skutków przy trybie uwierzytelniania "config": z powodu hasła ustalonego w pliku konfiguracyjnym, użytkownikowi końcowemu nie można pozwolić na jego zmianę.

$cfg['SuggestDBName'] wartość logiczna
Określa, czy sugerować nazwę bazy danych w formularzu "Utworzenie bazy danych", czy też pozostawić pole tekstowe puste.

$cfg['ShowBlob'] wartość logiczna
Określa, czy pola BLOB są pokazywane podczas przeglądania zawartości tabeli, czy też nie.

$cfg['NavigationBarIconic'] wartość logiczna
Określa, czy przyciski na pasku nawigacyjnym mają zawierać tekst, czy tylko symbole.

$cfg['ShowAll'] wartość logiczna
Określa, czy użytkownik powinien mieć wyświetlony przycisk "Pokazanie wszystkiego (wszystkich rekordów)" w trybie przeglądania, czy też nie.

$cfg['MaxRows'] liczba całkowita
Liczba wierszy wyświetlanych podczas przeglądania zestawu wyników. Jeśli zestaw składa się z większej ilości wierszy, zostanie pokazany link Poprzednie/Następne.

$cfg['Order'] napis [DESC|ASC|SMART]
Określa, czy domyślnie pola mają być wyświetlane w kolejności rosnącej (ASC), malejącej (DESC), czy też w kolejność "sprytnej" (SMART) - tj. malejącej dla pól typu TIME, DATE, DATETIME i TIMESTAMP, a rosnącej dla pozostałych typów.

$cfg['ProtectBinary'] wartość logiczna lub napis
Określa, czy pola typu BLOB lub BINARY mają być zabezpieczane przed edycją podczas przeglądania zawartości tabeli, czy też nie. Prawidłowymi wartościami są:
- FALSE pozwala na edycję wszystkich pól;
- blob pozwala na edycję wszystkich pól oprócz BLOB-ów;
- all nie pozwala na edycję żadnych pól BINARY, ani BLOB.

$cfg['ShowFunctionFields'] wartość logiczna
Określa, czy pola funkcji MySQL powinny być wyświetlane w trybie edycji/wstawiania, czy też nie.

$cfg['CharEditing'] napis
Określa jaki rodzaj pól edycyjnych powinna zostać użyta dla pól CHAR i VARCHAR. Możliwymi wartościami są:
  • input - umożliwia ograniczenie długości tekstu do długości pola MySQL, ale powoduje problemy z nowymi liniami w polach
  • textarea - żadnych problemów z nowymi liniami w polach, ale też żadnych ograniczeń długości
Domyślnym jest stare zachowanie, a więc input.

$cfg['ZipDump']wartość logiczna
$cfg['GZipDump']wartość logiczna
$cfg['BZipDump'] wartość logiczna
Określa, czy ma być zezwolona kompresja zip/GZip/BZip2 podczas tworzenia zrzutów do pliku, czy też nie.

$cfg['LightTabs'] napis
Jeżeli jest ustawione na True, na górze głównej ramki zostaną użyte graficznie mniej intensywne zakładki.

$cfg['DefaultTabServer'] napis
Określa zakładkę wyświetlaną domyślnie w widoku serwera. Możliwymi wartościami są: "main.php3" (zalecane przy konfiguracjach z wieloma użytkownikami), "server_databases.php3", "server_status.php3", "server_variables.php3", "server_privileges.php3" lub "server_processlist.php3".

$cfg['DefaultTabDatabase'] napis
Określa domyślną zakładkę wyświetlaną w widoku bazy danych. Możliwymi wartościami są: "db_details_structure.php3", "db_details.php3" i "db_search.php3".

$cfg['DefaultTabTable'] napis
Określa domyślną zakładkę wyświetlaną w widoku tabeli. Możliwymi wartościami są: "tbl_properties_structure.php3", "tbl_properties.php3", "tbl_select.php3" i "tbl_change.php3".

$cfg['MySQLManualBase'] napis
Jeśli zostało ustawione na URL prowadzący do dokumentacji MySQL-a (jej typ zależy od $cfg['MySQLManualType']), to zostaną wygenerowane odpowiednie linki pomocy.
Więcej informacji na temat podręczników MySQL i ich typów znajduje się w Dokumentacji MySQL-a.

$cfg['MySQLManualType'] napis
Typ dokumentacji MySQL-a:
  • old - stary styl używany w phpMyAdminie 2.3.0 i w wersjach wcześniejszych
  • searchable - "Przeszukiwalny, z komentarzami użytkowników"
  • chapters - "HTML, jedna strona na rozdział"
  • big - "HTML, wszystko na jednej stronie"
  • none - nie pokazuje żadnych linków do dokumentacji


$cfg['DefaultLang'] napis
Określa domyślny język, jakiego należy użyć, jeżeli nie został określony ani przez przeglądarkę, ani użytkownika.
B y dowiedzieć się o prawidłowych wartościach dla tego ustawienia, proszę zobaczyć skrypt select_lang.inc.php3.

$cfg['Lang'] napis
Wymuszenie: zawsze używaj tego języka (musi być zdefiniowany w skrypcie select_lang.inc.php3).

$cfg['DefaultCharset'] napis
Domyślny system kodowania znaków, jaki będzie używany do konwersji zapytań MySQL. Konwersja musi być włączona, jak zostało wyjaśnione przy opcji $cfg['AllowAnywhereRecoding'].
Możesz umieścić tu dowolny system kodowania, który jest w tablicy $cfg['AvailableCharsets'] i jest to tylko wybór domyślny; użytkownik może wybrać dowolny z nich.

$cfg['AllowAnywhereRecoding'] wartość logiczna
Pozwala na zmianę systemu kodowania znaków zapytań MySQL. By umożliwić konwersję zapytań MySQL, niezbędna jest obsługa recode lub iconv (wkompilowana lub jako moduł) w PHP, a konwersja musi być włączona w pliku językowym (domyślnie jedynie te, które są zapisane w Unikodzie, tylko by uniknąć utraty niektórych znaków).

$cfg['RecodingEngine'] napis
Możesz wybrać, które funkcji będą użyte dla konwersji systemu kodowania znaków. Możliwymi wartościami są:
  • auto - automatycznie użyj dostępnej funkcji (najpierw sprawdzana jest iconv, później recode)
  • iconv - użyj funkcji iconv lub libiconv
  • recode - użyj funkcji recode_string
Domyślną wartością jest auto.

$cfg['IconvExtraParams'] napis
Określa niektóre parametry konwersji systemu kodowania znaków iconv. Szczegóły zawiera dokumentacja iconva.

$cfg['AvailableCharsets'] tablica
Dostępne systemy kodowania znaków dla konwersji MySQL. Możesz dodać tutaj swoje własne (dowolne obsługiwane przez recode/iconv) lub usunąć te, których nie używasz. Systemy kodowania będą pokazane w tej samej kolejności, w jakiej zostały tu umieszczone; jeśli więc często używasz niektórych z nich, przenieś je na górę.

$cfg['GD2Available'] napis
Określa, czy GD >= 2 jest dostępny. Jeśli tak, może zostać użyty do transformacji MIME.
Możliwymi wartościami są:
  • auto - wykryj automatycznie; jest to dosyć kosztowna operacja dla PHP < 4.3.0, zaleca się więc zmienić to zależnie od faktycznych możliwościami serwera
  • yes - funkcje GD 2 mogą być użyte
  • no - funkcje GD 2 nie mogą być użyte
Domyślną wartością jest auto.

$cfg['LeftWidth'] liczba całkowita
Szerokość lewej ramki w pikselach.

$cfg['LeftBgColor'] napis [kolor HTML]
$cfg['RightBgColor'] napis [kolor HTML]
Kolory (HTML) tła obu ramek.

$cfg['RightBgImage'] napis
URI obrazka używanego jako tło prawej ramki. Może to być to ścieżka absolutna lub względna do Twojego katalogu z phpMyAdminem.
$cfg['LeftPointerColor'] napis [kolor HTML]
Kolor (HTML) wskaźnika w lewej ramce (nie działa w Netscapie 4).

$cfg['Border'] liczba całkowita
Szerokość obramowania tabeli.

$cfg['ThBgcolor'] napis [kolor HTML]
Kolor (HTML) nagłówków tabeli.

$cfg['BgcolorOne'] napis [kolor HTML]
Pierwszy kolor (HTML) wierszy tabeli.

$cfg['BgcolorTwo'] napis [kolor HTML]
Drugi kolor (HTML) wierszy tabeli.

$cfg['BrowsePointerColor'] napis [kolor HTML]
$cfg['BrowseMarkerColor'] napis [kolor HTML]
Kolory (HTML) wskaźnika i zaznaczenia w trybie przeglądania (nie działa w Netscapie 4).
Pierwszy z nich podświetla wiersz nad którym porusza się myszka a drugi pozwala na wizualne zaznaczenie/odznaczenie wierszy poprzez kliknięcie na nich.
Możesz wyłączyć obie funkcji przez pozostawienie pustymi odpowiednich dyrektyw.

$cfg['TextareaCols'] liczba całkowita
$cfg['TextareaRows'] liczba całkowita
$cfg['CharTextareaCols'] liczba całkowita
$cfg['CharTextareaRows'] liczba całkowita
Liczba kolumn i wierszy w obszarach tekstowych (textarea).
Wartość ta będzie powiększona (dwukrotnie) dla obszarów tekstowych dla zapytań SQL i (1.25 razy) dla obszarów tekstowych w oknie zapytania SQL.
Wartości Char* są używane w przypadku edycji pól CHAR i VARCHAR (jeśli zostało to skonfigurowane poprzez $cfg['CharEditing']).

$cfg['LongtextDoubleTextarea'] wartość logiczna
Określa, czy obszar tekstowy dla pól LONGTEXT ma mieć podwójną wielkość.

$cfg['TextareaAutoSelect'] wartość logiczna
Określa, czy cały obszar tekstowy pola zapytania będzie zaznaczony przy kliknięciu.

$cfg['CtrlArrowsMoving'] wartość logiczna
Czy ma być możliwe poruszanie się między polami za pomocą kombinacji klawiszy Ctrl+strzałka?

$cfg['LimitChars'] liczba całkowita
Maksymalna liczba znaków pokazywanych w polach nieliczbowych w trybie przeglądania. Może zostać wyłączone przyciskiem na stronie przeglądania.

$cfg['ModifyDeleteAtLeft'] wartość logiczna
$cfg['ModifyDeleteAtRight'] wartość logiczna
Określa miejsce, w którym mają być umieszczone linki modyfikacji i kasowania, gdy wyświetlana jest zawartość tabeli (mogą być one wyświetlane i po lewej, i po prawej stronie). "Left" i "right" są rozumiane jako "góra" i "dół" w pionowym trybie wyświetlania.

$cfg['DefaultDisplay'] napis
$cfg['HeaderFlipType'] napis
Są 3 tryby wyświetlania: horizontal (poziomy), horizontalflipped (poziomy odwrócony) i vertical (pionowy). Określa, który z nich jest używany domyślnie. Pierwszy wyświetla każdy wiersz w linii poziomej, drugi obraca nagłówki o 90 stopni, tak że możesz użyć nagłówków opisowych, nawet gdy pola zawierają jedynie małe wartości, i nadal je wypisywać. Tryb pionowy umieszcza każdy wiersz w linii pionowej.

HeaderFlipType może być ustawiony na 'css' lub 'faked'. Przy użyciu 'css', obrót nagłówka dla trybu poziomego odwróconego (horizontalflipped) jest dokonywany przez CSS. Przy wartości 'faked', przekształcenia dokonuje PHP, lecz nie wygląda to oczywiście tak dobrze jak przy CSS.

$cfg['DefaultPropDisplay'] napis
Podczas edycji/tworzenia nowych kolumn w tabeli, wszystkie pola są normalnie są uszeregowane w oddzielnych liniach. (domyślnie: 'horizontal'). Jeśli ustawisz tę zmienną na 'vertical', możesz mieć każde pole uszeregowane pionowo jedno obok drugiego. Możesz w ten sposób zyskać sporo miejsca w kierunku poziomym i nie musieć więcej przewijać.

$cfg['ShowBrowseComments'] wartość logiczna
$cfg['ShowPropertyComments'] wartość logiczna
Ustawienie odpowiedniej zmiennej na TRUE włączy wyświetlanie komentarzy dla kolumn w widokach przeglądania i właściwości. W trybie przeglądania komentarze są pokazywane wewnątrz nagłówka. W trybie właściwości komentarze są wyświetlane przy użyciu sformatowanej CSS-em kreskowanej linii pod nazwą pola. Komentarz jest pokazywany jako etykieta narzędzia tego pola.

$cfg['UploadDir'] napis
Nazwa katalogu, kończąca się ukośnikiem (/), do którego zostały wysłane poprzez inne środki niż phpMyAdmin (np. ftp) pliki SQL. Pliki te są dostępne na liście rozwijalnej, gdy klikniesz nazwę bazy danych, a następnie zakładkę SQL.

Warto zauważyć, że nazwy plików muszą mieć rozszerzenie ".sql".

Funkcja ta jest przydatna, gdy Twój plik jest zbyt duży by wysłać go poprzez HTTP lub gdy upload jest wyłączony w PHP.

Warto zauważyć, że jeśli PHP działa w trybie bezpiecznym, właścicielem tego katalogu musi być ten sam użytkownik, który jest właścicielem skryptów phpMyAdmina.

$cfg['SaveDir'] napis
Nazwa katalogu kończąca się ukośnikiem, gdzie mogą być zapisywane zrzuty.

Proszę zauważyć, że użytkownik, z którego prawami uruchomiony jest serwer www, musi mieć prawa zapisu do katalogu.

Proszę zauważyć, że jeżeli PHP jest uruchomiony w trybie bezpiecznym, właścicielem tego katalogu musi być ten sam użytkownik, który jest właścicielem skryptów phpMyAdmina.

$cfg['Export'] tablica
W tej tablicy określone są domyślnie parametry eksportu; nazwy pozycji są podobne do tekstów widocznych na stronie eksportu, więc można łatwo rozpoznać, co oznaczają.

$cfg['RepeatCells'] liczba całkowita
Powtórz nagłówki co X komórek. Wartość 0 powoduje dezaktywację.

$cfg['QueryFrame'] wartość logiczna
$cfg['QueryFrameJS'] wartość logiczna
$cfg['QueryFrameDebug'] wartość logiczna
$cfg['QueryWindowWidth'] liczba całkowita
$cfg['QueryWindowHeight'] liczba całkowita
$cfg['QueryHistoryDB'] wartość logiczna
$cfg['QueryWindowDefTab'] napis
$cfg['QueryHistoryMax'] liczba całkowita
Wszystkie te zmienne dotyczą nowego okna/nowej ramki zapytania. Kiedy $cfg['QueryFrame'] jest ustawione na TRUE, po lewej stronie osadza się ramka z niewielkim obszarem. Kliknięcie na nim powoduje otwarcie bezpośredniego interfejsu do wprowadzania zapytań SQL.

Kiedy $cfg['QueryFrameJS'] jest ustawione na true, kliknięcie na ten link otwiera nowe okno przeglądarki o ustalonym rozmiarze ($cfg['QueryWindowWidth'], $cfg['QueryWindowHeight'] - wysokość i szerokość w pikselach jako liczby całkowite). Jeżeli ustawione na false, kliknięcie na link otwiera tylko pole SQL w głównej ramce.

Jeśli masz przeglądarkę z obsługą JavaScriptu, użycie JavaScriptowego okna zapytań jest zalecane. Używane są proste funkcje by wymienić zaledwie kilka zmiennych, więc większość przeglądarek czwartej generacji powinna móc skorzystać z tej opcji. Aktualnie jest tylko testowana z Internet Explorerem 6 i Mozillą 1.x.

Jeżeli $cfg['QueryHistoryDB'] jest ustawione TRUE, wszystkie zapytania są rejestrowane w tabeli, która została przez Ciebie stworzona (zobacz $cfg['Servers'][$i]['history']). Jeżeli jest ustawione FALSE, wszystkie zapytania zostaną dodane do formularza, ale będą pamiętane tylko tak długo, jak otwarte będzie Twoje okno.

Przy użyciu okna opartego na JavaScript'cie, zostanie ono zawsze zaktualizowane przy kliknięciu na przeglądanie nowej tabelę/bazę danych i zaktywowane, jeśli klikniesz na "Edycja SQL" po użyciu zapytania. Można wyłączyć aktualizację przez zaznaczenie pola "Nie nadpisuj tego zapytania spoza okna", znajdującego się poniżej obszaru tekstowego zapytania. Następnie możesz przeglądać tabele/bazy danych w tle bez utraty zawartości pola tekstowego; jest to szczególnie użyteczne przy układaniu zapytania dotyczącego tabel, do których wcześniej musisz zajrzeć. Pole wyboru zostanie automatycznie znaczone przy każdej zmianie w zawartości pola tekstowego. Należy odznaczyć przycisk kiedy faktycznie okno zapytania ma być aktualizowane, nawet pomimo dokonanych w nim zmian.

Jeżeli $cfg['QueryHistoryDB'] jest ustawione na TRUE, możesz określić liczbę zapisywanych pozycji historii przy użyciu $cfg['QueryHistoryMax'].

Okno zapytania ma również własny zastaw zakładek grupujących funkcje. Używając zmiennej $cfg['QueryWindowDefTab'] można określić, która zakładka będzie domyślna przy otwierania okna. Może być ona ustawiona na 'sql', 'files', 'history' lub 'full'.

Zmienna $cfg['QueryFrameDebug'] może być używana przez programistów dla łatwiejszej integracji przyszłych funkcji.

$cfg['BrowseMIME'] wartość logiczna
Włącza transformacje MIME.

$cfg['MaxExactCount'] liczba całkowita
Określa dla jak dużych tabel phpMyAdmin powinien pobierać dokładną liczbę wierszy poprzez SELECT COUNT. Jeśli przybliżona liczba wierszy jest mniejsza niż ta wartość, zostanie użyte SELECT COUNT, w przeciwnym wypadku jedynie wartość zwrócona przez SHOW TABLE STATUS.

$cfg['WYSIWYG-PDF'] wartość logiczna
Użytkuje mechanizm edycji WYSIWYG, by łatwo umieszczać elementy na stronie PDF. Poprzez kliknięcie na przycisku 'włącz / wyłącz scratchboard' znajdującym się na stronie edycji współrzędnych x/y tych elementów, możesz włączyć scratchboard, gdzie będą umieszczone wszystkie elementy. Poprzez kliknięcie możesz je przenosić wśród wcześniej zdefiniowanego obszaru a współrzędne x/y będą się dynamicznie aktualizowały. Podobnie, gdy wprowadzasz nowe współrzędne bezpośrednio do pola tekstowego, zmieni się ona na scratchboardzie po opuszczeniu pola tekstowego przez kursor.
Aby zapisać nowe położenia, należy kliknąć na przycisk 'OK' pod tabelą. Jeżeli chcesz umieścić nowy element, najpierw dodaj go do tabeli elementów, a następnie go przeciągnij myszką.
Poprzez zmianę wielkości papieru i orientacji, możesz zmienić także wielkość scratchboardu. Możesz to zrobić po prostu przez zmianę pozycji na liście rozwijanej, która znajduje się niżej, a scratchboard zmieni rozmiar automatycznie, nie wpływając na aktualne położenia elementów.
Gdyby jakiś element znalazł się poza obszarem, możesz albo zwiększyć wielkość papieru, albo kliknąć na przycisk 'reset', aby umieścić wszystkie elementy pod sobą.
UWAGA: By ten mechanizm zadziałał, wymagana jest nowoczesna przeglądarka, taka jak IE6 lub Mozilla. Podstawowa funkcjonalność przeciągnij-i-upuść została uprzejmie pożyczona z www.youngpup.net i korzysta ze specjalnej licencji.

$cfg['SQP']['fmtType'] napis [html|none]
Głównym zastosowaniem nowego analizatora składni SQL jest eleganckie wypisywanie zapytań SQL. Domyślnie do formatowania zapytań używany jest HTML, ale możesz to wyłączyć, ustawiając tę zmienną na 'none'

$cfg['SQP']['fmtInd'] liczba zmiennoprzecinkowa
$cfg['SQP']['fmtIndUnit'] napis [em|px|pt|ex]
Przy eleganckim wypisywaniu zapytań SQL, w niektórych przypadkach część zapytania wewnątrz nawiasów jest wcięta. Zmieniając $cfg['SQP']['fmtInd'] można zmienić wielkość tego wcięcia.
Podobny cel ma $cfg['SQP']['fmtIndUnit'], który określa jednostki ilości wcięcia, którą określiłeś. Jest to używane w arkuszach stylów.

$cfg['SQP']['fmtColor'] tablica par napisów
Tablica ta jest używana, by określić kolory każdego typu elementu eleganckiego wypisywania zapytań SQL. Format pary to
klasa => [kod koloru HTML | pusty napis]
Jeśli określisz pusty napis jako kolor klasy, jest on ignorowany podczas tworzenia arkusza stylów. Nie powinno się zmieniać nazwy klas, a jedynie napisy kolorów.
Klucz nazw klas:
  • comment stosuje się do wszystkich podklas komentarzy
  • comment_mysql komentarze takie jak "#...\n"
  • comment_ansi komentarze takie jak "-- ...\n"
  • comment_c komentarze takie jak "/*...*/"
  • digit stosuje się do wszystkich podklas liczb
  • digit_hex liczby szesnastkowe
  • digit_integer liczby całkowite
  • digit_float liczby zmiennoprzecinkowe
  • punct stosuje się do wszystkich podklas znaków przestanowych
  • punct_bracket_open_round nawiasy otwierające "("
  • punct_bracket_close_round nawiasy zamykające ")"
  • punct_listsep separator elementów listy ","
  • punct_qualifier kwantyfikator tabel/kolumn "."
  • punct_queryend znacznik końca zapytania ";"
  • alpha stosuje się do wszystkich klas napisowych
  • alpha_columnType identyfikator pasujący do typu kolumny
  • alpha_columnAttrib identyfikator pasujący do atrybutu bazy danych/tabeli/kolumny
  • alpha_functionName identyfikator pasujący do nazwy funkcji MySQL
  • alpha_reservedWord identyfikator pasujący do innego słowa zarezerwowanego
  • alpha_variable identyfikator pasujący do zmiennej SQL "@coś"
  • alpha_identifier wszystkie inne identyfikatory
  • quote pasuje do wszystkich klas cudzysłowów i apostrofów
  • quote_double cudzysłowy "
  • quote_single apostrofy '
  • quote_backtick odwrócone apostrofy `

$cfg['SQLValidator']['use'] wartość logiczna
phpMyAdmin obsługuje aktualnie usługę Mimer SQL Validator, oryginalnie opublikowaną na Slashdot'cie.
Aby uzyskać pomoc, jak skonfigurować system, by używać tej usługi, zobacz FAQ 6.14.

$cfg['SQLValidator']['username'] napis
$cfg['SQLValidator']['password'] napis
Usługa SOAP pozwala zalogować się jako anonymous z dowolnym hasłem, tak więc używamy tego domyślnie. Zamiast tego, jeśli masz u nich konto, możesz umieścić tutaj szczegóły potrzebne do zalogowania; zostaną one użyte zamiast logowania się anonimowo.

$cfg['DBG']['enable'] wartość logiczna
TYLKO DLA PROGRAMISTÓW!
Włącza obsługę modułu DBG do debugowania phpMyAdmina. Wymagane do profilowania kodu.
Pomoc w konfiguracji systemu do użycia tej funkcji znajduje się w punkcie Programiści.
$cfg['DBG']['profile']['enable'] wartość logiczna
TYLKO DLA PROGRAMISTÓW!
Włącza profilowanie w phpMyAdminie. Doda to porcję danych na końcu każdej strony wyświetlanej w głównym oknie ze statystykami profilowania dla tej strony.
Być może będziesz musiał zwiększyć maksymalny czas na pomyślnie zakończenie wykonywania skryptu.
$cfg['DBG']['profile']['threshold'] liczba zmiennoprzecinkowa (jednostka - milisekundy)
TYLKO DLA PROGRAMISTÓW!
Podczas wyświetlania danych o profilowaniu, zmienna ta kontroluje czasowy próg wyświetlania każdych danych. Jeżeli czas przekroczy wartość progową, są one wyświetlane, w przeciwnym wypadku - nie są. Wartość jest wyrażona w milisekundach. W większości przypadków nie ma potrzeby zmiany.
$cfg['ColumnTypes'] tablica
Wszystkie możliwe typy kolumn MySQL. W większości przypadków nie ma potrzeby zmiany.

$cfg['AttributeTypes'] tablica
Możliwe atrybuty pól. W większości przypadków nie ma potrzeby zmiany.

$cfg['Functions'] tablica
Lista funkcji, które obsługuje MySQL. W większości przypadków nie ma potrzeby zmiany.


Transformacje

Wprowadzenie  -  Użycie  -  Struktura plików  - 


[1. Wprowadzenie]

Aby włączyć transformacje, musisz ustawić tabelę column_info table i odpowiednie dyrektywy. W części Konfiguracja można zobaczyć jak to zrobić.


Możesz zastosować różne transformacje do zwartości każdego pola. Transformacja weźmie tę zawartość i przekształci ją zgodnie z określonymi regułami zdefiniowanymi w wybranej transformacji.


Powiedzmy, że masz pole 'nazwapliku', które zawiera nazwę pliku. Normalnie zobaczyłbyś w phpMyAdminie jedynie tę nazwę. Używając tranformacji możesz przekształcić ją na HTML-owy link, na który będziesz mógł kliknąć i zobaczyć plik wyświetlony w nowym oknie przeglądarki. Używając opcji transformacji możesz również określić napisy, które będą dołączane na początku/końcu napisu albo format w jakim chcesz mieć wynik.


Ogólny opis wszystkich dostępnych transformacji i ich opcji jest dostępny w <www.twój-host.com>/<twój-katalog-instalacyjny>/libraries/transformations/overview.php3 .


Jeśli potrzebujesz wprowadzenia do efektywnego użycia tranformacji można znaleźć, zobacz linki na oficjalnej stronie domowej phpMyAdmina.


[2. Użycie]

Przejdź do strony tbl_properties.inc.php3 (osiągalną przez kliknięcie na linku 'właściwości' tabeli). Tam zobaczy trzy nowe pola na końcu linii. Są one nazwane 'Typ MIME', 'Sposób prezentacji danych' and 'Opcje transformacji'.


  • Pole 'Typ MIME' jest polem wyboru. Możesz pozostawić je puste lub użyć wartości 'auto' [funkcja ta jest jeszcze niedostępna]. Proszę zauważyć, że transformacje są nieaktywne, dopóki nie zostanie wybrany żaden typ MIME.
  • Pole 'Sposób prezentacji danych' jest polem wyboru. Możesz wybierać z - miejmy nadzieję - rosnącej liczby predefiniowanych transformacji. Informacje o tym, jak zbudować własną transformację, znajdują się poniżej.
    Mamy transformacje globalne i przywiązane do typu MIME. Transformacje globalne mogą zostać użyte dla każdego typu MIME. Jeśli to konieczne, wezmą one typ pod rozwagę. Transformacje związane z typem MIME zwykle operują tylko na określonym typie. Istnieją transformacje, które operują na głównym typie MIME (jak 'image'), które zwykle biorą pod rozwagę podtyp, oraz takie, które operują tylko na określonym podtypie (jak 'image/jpeg').
    Możesz użyć transformacji dla typów MIME, dla których funkcja nie została zdefiniowana. Nie ma żadnego zabezpieczenia przed wybraniem niewłaściwej tranformacji, więc sam zadbaj o to, jak wyglądał będzie wynik.
  • Pole 'Opcje transformacji' jest polem tekstowym. Musisz wprowadzić tu właściwe opcje funkcji przekształcającej. Zwykle tranformacje mogą działać z domyślnymi opcjami, lecz zwykle dobrym pomysłem jest rzucenie okiem na opis, by zobaczyć, które opcje są niezbędne.
    Bardzo podobnie jak w kolumnach ENUM/SET, musisz oddzielić poszczególne opcje używając formatu 'a','b','c',...(UWAGA NA BRAK ODSTĘPÓW). To dlatego, że wewnętrznie opcje będą przetwarzane jako tablica, gdzie pierwsza wartość to pierwszy element w tablicy, i tak dalej.
    Jeśli chcesz określić zestaw kodowania znaków MIME, możesz zdefiniować go w opcjach. Musisz umieścić tę definicję po opcjach predefiniowanych właściwej transformacji MIME, jako ostatnią wartość zestawu. Użyj formatu "'; charset=XXX'". Jeśli używasz transformacji, dla której możesz określić 2 opcje i chcesz dodać zestaw kodowania znaków, wprowadź "'pierwszy parameter','drugi parameter','charset=iso-8859-2'". Możesz jednakże użyć domyślnych wartości parametrów: "'','','charset=iso-8859-2'".

[3. Struktura plików]

Wszystkie typy MIME i ich tranformacje są zdefiniowane poprzez pojedyncze pliki w katalogu 'libraries/transformations/'.


Są one składowane w plikach, aby ułatwić ich przystosowanie do własnych potrzeb i dodawanie nowych transformacji.


Ponieważ użytkownik nie może wprowadzać własnych typów MIME, jest pewne, że transformacje zawsze będą działać. Nie ma sensu przeprowadzanie tranformacji dla typu MIME, którego funkcja przekształcająca nie wie jak obsłużyć.


Można jednak użyć pustych typów MIME i globalnych transformacji, które powinny działać dla wielu typów. Możesz również użyć transformacji do innego typu MIME, niż tego, do którego zostały stworzone, ale zwracaj uwagę na użycie opcji, jak również na to, co transformacja robi z polem.


Istnieje podstawowy plik o nazwie 'global.inc.php3'. Może on zostać włączony przez inną funkcję przekształcającą, a dostarcza on pewnych podstawowych funkcji.


Jest 5 możliwych nazw plików:

  1. Transformacja typu+podtypu MIME:

    [typ-mime]_[podtyp]__[transformacja].inc.php3

    Proszę zauważyć, że typ-mime i podtyp są oddzielone znakiem '_', który nie powinien się znajdować w ich nazwach. Nazwa funkcji/pliku transformacji może zawierać tylko takie znaki, które nie powodują problemów w systemie plików, ani nie łamią konwencji nazewnictwa funkcji PHP.

    Funkcja przekształcająca będzie nazywała się 'PMA_transform_[typ-mime]_[podtyp]__[transformacja]()'.

    Przykład:

    text_html__sformatowany.inc.php3
    PMA_transform_text_html__sformatowany()
  2. Transformacja typu MIME (bez podtypu):

    [typ]__[transformacja].inc.php3

    Proszę zauważyć, że brak jest pojedynczych znaków '_' w nazwie pliku. Nazwa funkcji/pliku transformacji może zawierać tylko takie znaki, które nie powodują problemów w systemie plików, ani nie łamią konwencji nazewnictwa funkcji PHP.

    Funkcja przekształcająca będzie nazywała się 'PMA_transform_[typ-mime]__[transformacja]()'.

    Przykład:

    text__sformatowany.inc.php3
    PMA_transform_text__sformatowany()
  3. Typ+podtyp MIME bez właściwej funkcji przekształcającej

    [typ-mime]_[podtyp].inc.php3

    Proszę zauważyć, że w nazwie pliku nie ma znaków '__'. Nie można używać specjalnych znaków powodujących problemy w systemie plików.

    Żadna funkcja przekształcająca nie jest zdefiniowana w samym pliku.

    Przykład:

    text_plain.inc.php3
    (Brak funkcji)
  4. Typ MIME (bez podtypu) bez właściwej funkcji przekształcającej

    [typ-mime].inc.php3

    Proszę zauważyć, że brak jest pojedynczych znaków '_' w nazwie pliku. Nie można używać specjalnych znaków powodujących problemy w systemie plików.

    Żadna funkcja przekształcająca nie jest zdefiniowana w samym pliku.

    Przykład:

    text.inc.php3
    (Brak funkcji)
  5. Transformacja globalna bez właściwego typu MIME

    global__[transformacja].inc.php3

    Funkcja przekształcająca będzie się nazywała 'PMA_transform_global__[transformacja]()'.

    Przykład:

    global__sformatowane
    PMA_transform_global__sformatowane()

Zatem, ogólnie rzecz biorąc, używaj '_' by rozdzielić typ i podtyp MIME, a '__' by dostarczyć nazwę funkcji przekształcającej.


Wszystkie pliki nie zawierające w nazwie '__' nie są pokazywane jako poprawne funkcje przekształcające w polu wyboru.


By dodać nową funkcję przekształcającą, zobacz plik libraries/transformations/TEMPLATE. By dodać typ MIME bez funkcji, zobacz plik libraries/transformations/TEMPLATE_MIMETYPE. Proszę również zwrócić uwagę na opis funkcji w plikach językowych. Dla każdej funkcji musi istnieć zmienna $strTransformation_[nazwa pliku bez .inc.php3].


Aby wygenerować nowe funkcje i wpisy w plikach językowych, możesz użyć generatora szablonów.


Do tworzenia nowych funkcji przekształcających służy skrypt libraries/transformations/template_generator.sh. Aby utworzyć nowy, pusty typ MIME, skorzystaj ze skryptu libraries/transformations/template_generator_mimetype.sh.



FAQ - Często zadawane pytania

Serwer  -  Konfiguracja  -  Ograniczenia  -  Wielu użytkowników  -  Przeglądarki  -  Wskazówki  -  Projekt  -  Bezpieczeństwo


Rzuć okiem na linki na oficjalnej stronie domowej phpMyAdmina, które prowadzą do gruntownych omówień funkcji i/lub interfejsu phpMyAdmina.


[1. Serwer]

Używam PHP 4+ i mój serwer pada za każdym razem kiedy wymagana jest określona czynność albo phpMyAdmin wysyła pustą stronę lub stronę pełną tajemniczych znaków do przeglądarki; co mogę zrobić?

Jest kilka znanych błędów PHP związanych z buforowaniem wyjścia i kompresją.
Spróbuj w pliku config.inc.php lub .php3 ustawić dyrektywę $cfg['OBGzip'] na FALSE a w pliku konfiguracyjnym PHP.
dyrektywę zlib.output_compression na Off. Oprócz tego wiemy o problemach związanych z wersjami kandydującymi do wydania jako PHP 4.2.0 (testowane z PHP 4.2.0 RC1 do RC4) oraz z MS Internet Explorerem. Prosimy o aktualizację do wydania PHP w wydaniu 4.2.0.

[1.2] Mój serwer Apache pada, gdy używam phpMyAdmina.

Po pierwsze, powinieneś wypróbować najnowszą wersję Apache'a (i, być może, MySQL-a).
Zobacz także inne wpisy FAQ o błędach PHP związanych z buforowaniem wyjścia.
Jeżeli serwer nadal pada, poproś o pomoc na różnych grupach pomocy technicznej Apache'a.

[1.3] Używam phpMyAdmina z trybem uwierzytelniania "cookie" pod PHP 4.2.0 lub 4.2.1 załadowanym jako moduł Apache'a 2+, ale nie mogę skorzystać ze skryptu: cały czas widzę ekran logowania.

Jest to znany błąd PHP (zobacz raport o błędzie) z oficjalnej bazy danych błędów PHP. Oznacza to, że nie ma i nie będzie żadnej poprawki phpMyAdmina tego błędu, jako że nie ma możliwości napisania takiej poprawki.

[1.4] Używam phpMyAdmin na IIS-ie, dostaję komunikat o błędzie: "The specified CGI application misbehaved by not returning a complete set of HTTP headers...".

Po prostu zapomniałeś przeczytać pliku install.txt z dystrybucji PHP. Rzuć okiem na ostatnią wiadomość raportu o błędzie z oficjalnej bazy danych błędów PHP.

[1.5] Używam phpMyAdmina na IIS-ie, spotykam się z padami i/lub wieloma komunikatami o błędach przy trybie uwierzytelniania HTTP lub advanced.

Jest to znany problem z filtrem ASAPI PHP: nie jest zbyt stabilny. Więcej informacji i kompletne testy w wiadomości wysłanej André B. aka "djdeluxe76" w tym wątku forum phpWizarda.
Zamiast tego proszę użyć trybu uwierzytelniania cookie.

[1.6] Nie mogę używać phpMyAdmina na PWS-ie: nic się nie wyświetla!

Wygląda to na błąd PWS-a. Filippo Simoncini znalazł obejście problemu (na razie nie ma lepszej poprawki): usuń lub zakomentuj deklaracje DOCTYPE (2 linijki) ze skryptów header.inc.php3, header_printview.inc.php3, index.php3, left.php3 i libraries/common.lib.php3.

[1.7] Jak skompresować zrzut lub eksport CSV poprzez GZip lub Bzip2? Wygląda na to, że nie działa.

Kompresja bazuje na funkcjach PHP gzencode() i bzcompress(), by być bardziej niezależnym od platformy (Unix/Windows, tryb bezpieczny lub nie, itd.). Dlatego musisz mieć PHP4 >= 4.0.4 z obsługą Zlib/Bzip2 (--with-zlib i --with-bz2).
Spotkaliśmy się z padami PHP podczas prób ściągnięcia zrzutu przez MS Internet Explorera, kiedy phpMyAdmin jest uruchomiony na PHP w wersji kandydującej do wydania 4.2.0. W takim przypadku powinieneś przerzucić się na wydanie 4.2.0 PHP.

[1.8] Nie mogę wstawić pliku tekstowego do tabeli i w efekcie dostaję błąd o byciu w trybie bezpiecznym.

Twój wysyłany plik jest zapisywany przez PHP w "katalogu uploadu", zdefiniowanego w php.ini przez zmienną upload_tmp_dir (zwykle domyślną wartością systemową jest /tmp).
Zalecamy poniższą konfigurację dla serwerów Apache uruchomionym w trybie bezpiecznym, która włącza wysyłanie plików i jednocześnie jest przyzwoicie bezpieczna:

  • utwórz osobny katalog na uploady: mkdir /tmp/php
  • przekaż własność do użytkownika.grupy serwera Apache: chown apache.apache /tmp/php
  • daj odpowiednie prawa: chmod 600 /tmp/php
  • umieść upload_tmp_dir = /tmp/php w pliku php.ini
  • zrestartuj Apache'a

[1.9] Mam kłopoty podczas wysyłania plików. Ogólnie rzecz biorąc wysyłanie plików nie działa w moim systemie a wysłane pliki mają nagłówek Content-Type: w pierwszej linii.

W rzeczywistości nie jest to związane z phpMyAdminem, ale z RedHatem 7.0. Masz RedHata 7.0 i zaktualizowałeś swój RPM z PHP do php-4.0.4pl1-3.i386.rpm, prawda?
Tak więc problem polega na tym, że pakiet ten ma poważny błąd, który został poprawiony lata temu w PHP (2001-01-28: szczegóły w systemie śledzenia błędów PHP). Problemem jest to, że błędny pakiet jest ciągle dostępny, mimo że został poprawiony (szczegóły w bugzilli RedHata).
Proszę więc ściągnąć poprawiony pakiet (4.0.4pl1-9), a problem powinien zniknąć.
Przy okazji poprawia to problem \r\n z wysyłaniem plików!

[1.10] Mam kłopoty podczas wysyłania plików poprzez phpMyAdmina chodzącego na bezpiecznym serwerze (tj. na serwerze z obsługą SSL - przyp. tłum.). Moją przeglądarką jest Internet Explorer i używam serwera Apache.

Jak zasugerował "Rob M" na forum phpWizarda, dodaj tę linijkę do swojego httpd.conf:
    SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
Wygląda na to, że usuwa to wiele problemów pomiędzy Internet Explorerem i SSL.

[1.11] Podczas wysyłania pliku z pola zapytania dostaję 'open_basedir restriction'

Od wersji 2.2.4 phpMyAdmin obsługuje serwery z restrykcjami open_basedir. Zakładając, że restrykcja pozwala ci otwierać pliki w aktualnym katalogu ('.'), wszystko co musisz zrobić to stworzyć katalog 'tmp' w katalogu instalacyjnym phpMyAdmina z prawami 777 i z tym samym właścicielem, który jest właścicielem Twojego phpMyAdmina. Wysłane pliki będą tam przemieszczone, a po wykonaniu twoich poleceń SQL, usunięte.

[1.12] Straciłem moje hasło do roota MySQL, co mam robić?

Podręcznik MySQL-a wyjaśnia jak sprowadzić uprawnienia do stanu początkowego.

[1.13] Dostaję błąd 'Brak zapytania SQL' podczas próby wykonania zapamiętanego zapytania.

Jeśli PHP nie ma praw do czytania/pisania do swojego upload_tmp_dir, nie ma też dostępu do wysłanego zapytania.

[1.14] Dostaję błąd 'Brak zapytania SQL' podczas próby wysłania zapytania z wygodnego obszaru tekstowego.

Sprawdź dyrektywę post_max_size ze swojego pliku konfiguracyjnego PHP i spróbuj zwiększyć jej wartość.

[1.15] Mam problemy z nazwami pól mysql.user.

We wcześniejszych wersjach MySQL pola User i Password miały nazwy user i password. Zmodyfikuj nazwy swoich pól, tak żeby pasowały do aktualnych standardów.

[1.16] Nie mogę wysyłać dużych plików ze zrzutami (problemy z pamięcią, http lub z przekroczeniem czasu bezczynności).

Pierwszymi rzeczami do sprawdzenia (lub poproszenia swojego dostawcy hosta) są wartości upload_max_filesize, memory_limit i post_max_size z pliku konfiguracyjnym php.ini.
Wszystkie te trzy ustawienia ograniczają maksymalne wielkości danych, które mogą został wysłane i obsłużone przez PHP. Jeden z użytkowników stwierdził również, że post_max_size i memory_limit powinny być większe niż upload_max_filesize.
Jeżeli masz problem z przekroczeniem czasu bezczynności, zobacz opcję $cfg['UploadDir'].

[1.17] Czy phpMyAdmin obsługuje MySQL-a 4.1 i 5.0?

phpMyAdmin zapewnia ograniczoną obsługę MySQL-a 4.1. Oznacza to, że nie możesz ani przyporządkować tabeli lub polu systemu kodowania znaków, ani zmieniać automatycznie przydzielonych zestawów.
Podczas kompilacji PHP mocno zalecamy ręczną konsolidację z biblioteką kliencką MySQL-a 4.1, gdyż ta, która jest aktualnie dostarczana z PHP jest raczej stara i może powodować problemy.
MySQL 5 nie jest jeszcze obsługiwany.

[1.18] Używam MySQL-a <= 4.0.1 z lower_case_table_names ustawionym na 1. Jeżeli stworzę nową tabelę z dużą literą w nazwie, jest ona zmieniana na małą, tak jak powinna być. Ale jeżeli spróbuję usunąć tę tabelę, MySQL nie może znaleźć odpowiedniego pliku.

Jest ot błąd MySQL-a <= 4.0.1. Prosimy o aktualizację do przynajmniej MySQL 4.0.2 lub wyłączenie dyrektywy lower_case_table_names.

[1.19] Nie mogę używać funkcji "wyświetlania relacji", bo skrypt wydaje się nie znać kroju czcionki, jakiej używam!

Biblioteka "FPDF", której używamy dla tej funkcji wymaga pewnych specjalnych plików dla krojów czcionek.
Aby utworzyć te pliki, odwołaj się do podręcznika FPDF.


[1.20] Dostaję błąd "nie można załadować modułu MySQL, proszę sprawdzić konfigurację PHP".

Aby połączyć się z serwerem MySQL, PHP potrzebuje zestawu funkcji MySQL nazywanych "modułem MySQL". Moduł ten może być częścią serwera PHP (wkompilowany), w przeciwnym wypadku musi być załadowany dynamicznie. Jego nazwą jest prawdopodobnie mysql.so lub mysql.dll. phpMyAdmin próbował załadować moduł, ale się to nie udało.

Zwykle problem można rozwiązać instalując pakiet oprogramowania o nazwie "PHP-MySQL" lub podobnej.

[1.21] Używam wersji CGI PHP pod Uniksem, nie mogę zalogować się używając uwierzytelniania cookie.

W pliku php.ini ustaw mysql.max_links na więcej niż 1.

[1.22] Nie widzę pola "Lokalizacja pliku tekstowego", więc nie mogę wysyłać pliku.

Najczęstszym powodem jest to, że w php.ini parametr file_uploads nie jest ustawiony na "on".

[1.23] Używam MySQL-a na maszynie z Win32. Za każdym razem, kiedy tworzę nową tabelę jej nazwa i nazwy jej pól są zmieniane na małe litery!

Dzieje się to z powodu dyrektywy MySQL lower_case_table_names domyślnie ustawionej na 1 (ON) w wersji MySQL dla Win32. Możesz zmienić to zachowanie po prostu poprzez zmianę jej na 0 (OFF):
Po prostu zmodyfikuj swój plik my.ini, który powinien znajdować się w katalogu Windows, dodając następująca linię do grupy [mysqld]:
set-variable = lower_case_table_names=0
Następnie zapis plik i zrestartuj usługę MySQL. Zawsze możesz sprawdzić wartość tej dyrektywy używając zapytania
SHOW VARIABLES LIKE 'lower_case_table_names';

[1.24] W moich zapytaniach niektóre znaki są obcięte albo dostaję losowo dodane znaki. Używam PHP 4.2.3.

Jest to błąd PHP 4.2.3.

[1.25] Używam Apache'a z mod_gzip-1.3.26.1a na Windows XP i miewam problemy, takie jak niezdefiniowe zmienne podczas uruchamiana zapytania SQL.

Wskazówka od Josego Fandosa: zakomentuj następujące dwie linie w httpd.conf, w ten sposób:
# mod_gzip_item_include file \.php$
# mod_gzip_item_include mime "application/x-httpd-php.*"
bo ta wersja mod_gzip na Apache'u (Windows) ma problemy z obsługą skryptów PHP. Oczywiście Apache'a trzeba zrestartować.

[1.26] Właśnie zainstalowałem phpMyAdmina w głównym katalogu dokumentów IIS-a, ale podczas próby uruchomienia phpMyAdmina dostaję błąd "No input file specified"

Problemem są prawa dostępu. Kliknij prawym przyciskiem na folderze phpMyAdmina i wybierz właściwości. W zakładce Bezpieczeństwo (Security), kliknij na "Dodaj" ("Add") i wybierz z listy użytkownika "IUSER_machine". Ustaw jego prawa dostępu i powinno zadziałać.

[1.27] Dostaję pusty ekran, kiedy chcę oglądnąć bardzo dużą stronę (np. db_details_structure.php3 z dużą ilością baz danych)

Jest to błąd PHP, który występuje przy włączonym buforowaniu wyjścia GZIP. Jeśli je wyłączysz (poprzez $cfg['OBGzip'] = FALSE w config.inc.php3), powinno zadziałać. Błąd ten zostanie naprawiony w PHP 5.0.0.

[1.28] Serwer MySQL czasami odrzuca zapytania i zwraca komunikat 'Errorcode: 13'. Co to oznacza?

Może się to dziać z powodu błędu MySQL-a w sytuacji posiadania nazw baz danych / tabel z dużymi literami, pomimo lower_case_table_names ustawionego na 1. Aby to naprawić, wyłącz tę dyrektywę, przekształć wszystkie nazwy baz danych i tabel na składające się z małych liter i włącz ją ponownie. Błąd ten został także poprawiony w MySQL-u począwszy od wersji 3.23.56 / 4.0.11-gamma.

[1.29] Kiedy tworzę tabelę albo modyfikuję pole, dostaję błąd a pola są zdublowane.

Istnieje możliwość skonfigurowania Apache'a w taki sposób, że PHP ma problemy z interpretacją plików .php.

Problemy występują, gdy używane są 2 różne (i niezgodne) zestawy dyrektyw:

SetOutputFilter PHP
SetInputFilter PHP
i
AddType application/x-httpd-php .php

W przypadku, który widzieliśmy, jeden zestaw był w httpd.conf, podczas gdy drugi w php.conf.
Polecanym sposobem jest ten z AddType, więc po prostu zakomentuj pierwszy zestaw linii i zrestartuj Apache'a:

#SetOutputFilter PHP
#SetInputFilter PHP


[2. Konfiguracja]

[2.1] Wyświetlany jest komunikat o błędzie "Warning: Cannot add header information - headers already sent by ...", gdzie jest problem?

Sprawdź swój plik config.inc.php lub .php3 i upewnij się, że nie ma niczego (tj. pustych linii, spacji, znaków...) ani przed znacznikiem <?php na początku, ani po znaczniku ?> na końcu.

[2.2] phpMyAdmin nie może się połączyć z MySQL-em. Co jest źle?

Albo jest to błąd konfiguracji PHP, albo nazwa-użytkownika/hasło są błędne. Spróbuj stworzyć mały skrypt, który używa mysql_connect i zobacz, czy działa. Jeśli nie, być może nawet nie wkompilowałeś obsługi MySQL-a do PHP.

[2.3] Wyświetlany jest komunikat o błędzie "Warning: MySQL Connection Failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)...". Co mogę zrobić?


Dla użytkowników RedHata Harald Legner sugeruje na liście dyskusyjnej co następuje:

Na moim RedHat'cie gniazdem MySQL-a jest /var/lib/mysql/mysql.sock. W swoim pliku php.ini znajdziesz linię
    mysql.default_socket = /tmp/mysql.sock
Zmień ją na
    mysql.default_socket = /var/lib/mysql/mysql.sock
Potem zrestartuj Apache'a i będzie działało.

Oto poprawka zaproponowana przez Brada Ummera na forum phpWizarda:

  • Po pierwsze: musisz określić jakiego gniazda używa MySQL.
    Aby to zrobić, zatelnetuj na swój serwer, wejdź go katalogu bin MySQL-a. W tym katalogu powinien być plik o nazwie mysqladmin. Napisz ./mysqladmin variables, co powinno dać sporo informacji o serwerze MySQL, w tym gniazdo (/tmp/mysql.sock, na przykład).
  • Następnie musisz powiedzieć PHP, żeby używał tego gniazda.
    Zakładając, że używasz PHP 3.0.10 lub lepszego, możesz określić gniazdo, które będzie używane gdy otwierasz połączenie. Aby to zrobić w phpMyAdminie, musisz uzupełnić informację o gnieździe w config.inc.php3.
    Na przykład: $cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';

    Proszę również upewnić się, że prawa tego pliku pozwalają go odczytać przez Twój serwer WWW (tj. '0755').

Rzuć okiem również na odpowiedni punkt dokumentacji MySQL.

[2.4] Moja przeglądarka niczego nie wyświetla, kiedy próbuję uruchomić phpMyAdmina; co mogę zrobić?

Spróbuj ustawić w pliku konfiguracyjnym phpMyAdmina dyrektywę $cfg['OBGZip'] na FALSE. To czasem pomaga.
Rzuć również okiem na wersję swojego PHP: jeśli zawiera "4.0b...", oznacza to, że używasz wersji beta PHP. Nie jest to szczególnie dobry pomysł, zaktualizuj go do zwykłej wersji.

[2.5] Za każdym razem kiedy chcę wstawić lub zmienić rekord albo usunąć bazę danych lub tabelę, wyświetla się błąd 404 (strony nie znaleziono) albo, przy uwierzytelnianiu HTTP lub cookie, jestem proszony o ponowne zalogowanie się. Co jest źle?

Sprawdź wartość, dyrektywy $cfg['PmaAbsoluteUri'], którą ustawiłeś w pliku konfiguracyjnym phpMyAdmina.

[2.6] Dostaję błąd "Access denied for user: 'root@localhost' (Using password: YES)" podczas próby zalogowania się na serwer MySQL na hoście, który przekazuje port na mój host lokalny.

Kiedy używasz portu na swoim hoście lokalnym, którego port jest przekierowywany do innego hosta, MySQL nie rozwiązuje nazwy localhost zgodnie z oczekiwaniami.
Erik Wasser wyjaśnia: Oto rozwiązanie: jeżeli Twoim hostem jest "localhost" MySQL (w tym również narzędzie linii poleceń 'mysql') zawsze próbuje użyć połączenia z gniazdem, by przyspieszyć sprawy. I nie działa to w takiej konfiguracji z przekazywaniem portów.
Jeżeli wpiszesz "127.0.0.1" jako nazwę hosta, wszystko jest w porządku i MySQL używa połączenia TCP.


[3. Znane ograniczenia]


[3.1] Podczas używania uwierzytelniania HTTP, użytkownik, który się wylogował nie może się ponownie zalogować pod tym samym nickiem.

Jest to związane w mechanizmem uwierzytelniania (protokołem) używanym przez phpMyAdmina. Planujemy zmienić to kiedy tylko znajdziemy wystarczająco dużo wolnego czasu, by to zrobić, ale można obejść ten problem: po prostu zamknij wszystkie otwarte okna przegląderek i wtedy powróć do phpMyAdmin. Powinieneś móc zalogować się ponownie.

[3.2] Podczas zrzucania dużej tabeli w trybie kompresji dostaję błąd przekroczenia limitu pamięci albo limitu czasu.

W wersji 2.2.4 budujemy skompresowane zrzuty w pamięci, tak że duże zrzuty tabel mogą się zawieszać. Jedyna alternatywa, jaka przychodzi nam do głowy (używanie wywołań systemowych do mysqldumpa, a następnie gzipa lub bzip2) nie dałaby się zastosować w środowiskach gdzie PHP pracuje w trybie bezpiecznym: dostęp do programów systemowych jest ograniczony przez administratora systemu i egzekwowane są ograniczenia czasu. (alternatywa ta nie da się zastosować również w środowiskach z Windows, gdzie gzipa zwykle po prostu brak - przyp. tłum.)

[3.3] Kiedy zmieniam nazwę lub modyfikuję strukturę tabeli InnoDB, tracę związki z kluczem zewnętrznym.

Wygląda to na błąd InnoDB (poprawiony w MySQL 3.23.50?). Z drugiej strony, proszę pamiętać, że phpMyAdmin w wersji 2.3.0 nie wspiera InnoDB.

[3.4] Nie mogę zaimportować zrzutów stworzonych przez narzędzie mysqldump z dystrybucji serwera MySQL.

Problemem jest to, że mysqldump tworzy nieprawidłowe komentarze, takie jak te:

-- MySQL dump 8.22
--
-- Host: localhost Database: database
---------------------------------------------------------
-- Server version 3.23.54

Niewłaściwą częścią kodu są poziome linie zrobione z myślników, które występują raz w każdym zrzucie stworzonym przez mysqldump. Jeżeli chcesz uruchomić swój zrzut, musisz przekształcić go na prawidłowy MySQL. Oznacza to, że musisz dodać biały znak po pierwszych dwóch myślnikach, albo dodać # przed nimi:
-- -------------------------------------------------------
lub
#---------------------------------------------------------

[3.3] Podczas używania zagnieżdżonych folderów ($cfg['LeftFrameTableSeparator']), niektóre wielokrotne hierarchie wyświetlane są w zły sposób!

Proszę zauważyć, że nie powinno się używać napisów oddzielających wielokrotnie bez żadnych znaków pomiędzy nimi albo na początku / końcu nazwy tabeli. Jeżeli musisz - pomyśl o użyciu innego TableSeparator-a lub wyłączeniu tej funkcji.


[4. Usługodawcy internetowi, instalacje dla wielu użytkowników]

[4.1] Jestem usługodawcą internetowym. Czy mogę skonfigurować jedną centralną kopię phpMyAdmina, czy też muszę instalować go dla osobno dla każdego klienta?

Począwszy od wersji 2.0.3 możesz skonfigurować centralną kopię phpMyAdmina dla wszystkich użytkowników. Rozwój tej funkcji został życzliwie zasponsorowany przez NetCologne GmbH. Wymaga ona poprawnie ustawionego zarządzania użytkownikami MySQL i uwierzytelniania HTTP lub cookie w phpMyAdminie. Zobacz punkt Instalacja, temat "Używanie uwierzytelniania HTTP".

[4.2] Jaki jest zalecany sposób na uczynienie phpMyAdmina odpornego na niepowołany dostęp?

Zależy to od Twojego systemu.
Jeżeli używasz serwera, do którego nie mają dostępu inni ludzie, wystarczy użyć ochrony katalogów, którą dostarcza Twój serwer www (np. z Apachem możesz użyć plików .htaccess).
Jeżeli inni ludzie mają dostęp przez telnet do Twojego serwera, powinieneś używać funkcji uwierzytelniania HTTP phpMyAdmina.

Propozycje:

  • Twój plik config.inc.php3 powinien mieć prawa 660 (chmod 660).
  • Wszystkie pliki phpMyAdmina powinny należeć do użytkownika phpmy i grupy apache (chown phpmy.apache), gdzie phpmy jest użytkownikiem, którego hasło jest znane tylko Tobie, a apache jest grupą z jaką uruchomiony jest Apache.
  • Powinieneś używać PHP w trybie bezpiecznym, aby ochronić się przed użytkownikami, którzy próbują włączać config.inc.php3 w swoich skryptach.

[4.3] Dostaję błędy o braku możliwości włączenia pliku w katalogu /lang lub /libraries.

Sprawdź php.ini, albo poproś swojego administratora systemu, by to sprawdził. Aby pozwolić na normalną pracę phpMyAdmina, Include_path musi zawierać "." gdzieś wewnątrz, a open_basedir, jeśli jest używane, musi zawierać "." i "./lang",

[4.4] phpMyAdmin zawsze daje "Access denied" ("Dostęp zabroniony") podczas używania uwierzytelniania HTTP.

Może się to dziać z kilku powodów:

  • $cfg['Servers'][$i]['controluser'] lub $cfg['Servers'][$i]['controlpass'] są błędne.
  • Nazwa-użytkownika/hasło, które zostały podane w oknie logowania są błędne.
  • Jest już ustawiony jakiś mechanizm bezpieczeństwa dla katalogu phpMyAdmina, np. plik .htaccess. Będzie on kolidował z uwierzytelnianiem phpMyAdmina, więc usuń go.

[4.5] Czy jest możliwe pozwolenie użytkownikom na tworzenie ich własnych baz danych?

Począwszy od wersji 2.2.5, na stronie zarządzania użytkownikami, można wprowadzić wieloznaczną nazwę bazy danych dla użytkownika (na przykład "joe"), i dać uprawnienia, jakie chcesz. Na przykład dodanie SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER pozwoli użytkownikowi tworzyć/zarządzać jego bazą (bazami) danych.

[4.6] Jak mogę używać dodatkowego uwierzytelniania podstawie hostów?

Jeżeli masz istniejące reguły ze starego pliku .htaccess, możesz je wziąć i dodać nazwę użytkownika pomiędzy napisami 'deny'/'allow' a 'from'. Użycie znaku wieloznacznego '%' dla nazwy użytkownika będzie tu dużą zaletą, jeśli pasuje to do Twojej instalacji. Następnie możesz po prostu dodać zaktualizowane linie do tablic $cfg['Servers'][$i]['AllowDeny']['rules'].

Jeśli potrzebujesz gotowego przykładu, możesz wypróbować ten fragment. Zabrania on użytkownikowi 'root' logowania się z innych sieci niż bloki prywatnej sieci IP.
    // zabroń rootowi logować się, pozwól tylko z sieci lokalnych
    $cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
    $cfg['Servers'][$i]['AllowDeny']['rules'] = array(
        'deny root from all',
        'allow root from localhost',
        'allow root from 10.0.0.0/8',
        'allow root from 192.168.0.0/16',
        'allow root from 172.16.0.0/12',
        );

[4.7] Okno uwierzytelniania jest wyświetlane więcej niż raz, dlaczego?

Zdarza się to gdy do uruchomienia phpMyAdmina używasz URL-a, który różni się od tego ustawionego w $cfg['PmaAbsoluteUri']. Na przykład brakuje "www" albo wpisany został adres IP, kiedy w pliku konfiguracyjnym została zdefiniowana nazwa domeny.


[5. Przeglądarki lub systemy operacyjne klientów]

[5.1] Nie mogę pozbyć się błędu pamięci a moje kontrolki nie funkcjonują kiedy próbuję stworzyć tabelę z ponad 14 polami.

Udało nam się odtworzyć ten problem jedynie pod Win98/98SE. Testując pod Windows NT 4 lub Windows 200 mogliśmy łatwo utworzyć ponad 60 pól.
Obejściem problemu jest stworzenie małej ilości pól i późniejszy powrót do właściwości tabeli i dodanie kolejnych pól.

[5.2] Z Xitami 2.5b4 phpMyAdmin nie przetwarza pól formularza.

Nie jest to problem phpMyAdmina, ale znany błąd Xitami: spotkasz się z nim przy każdym skrypcie i na każdej stronie używającej formularzy.
Zaktualizuj (do nowszej lub starszej wersji) swój serwer Xitami.

[5.3] Mam problemy ze zrzucaniem tabel w Konquerorze (phpMyAdmin 2.2.2)

W Konquerorze 2.1.1: zwykłe zrzuty, zrzuty zip i GZip działają dobrze, z wyjątkiem tego, że proponowaną nazwą pliku jest zawsze 'tbl_dump.php'. Wygląda na to, że zrzuty BZip2 nie działają.
W Konquerorze 2.2.1: zwykłe zrzuty działają; zrzuty zip są umieszczane w katalogu tymczasowym użytkownika, więc muszą być stamtąd przeniesione przed zamknięciem Konquerora, albo znikną. Zrzuty GZip dają komunikat o błędzie.
Dla Konquerora 2.2.2 musimy przeprowadzić testy.

[5.4] Nie mogę używać trybu uwierzytelniania cookie, bo Internet Explorer nigdy nie przechowuje ciasteczek.

MS Internet Explorer wygląda na naprawdę dziurawego, jeśli chodzi o ciasteczka (cookies), przynajmniej do wersji 6. I dzięki Andrew Zivolupowi, wyśledziliśmy w tej dziedzinie także błąd PHP 4.1.1!
Tak więc, jeśli używasz PHP 4.1.1, spróbuj go zaktualizować do nowszej lub starszej wersji... to może zadziałać!

[5.5] W Internet Explorerze 5.0 podczas przeglądania rekordów dostaję błędy JavaScriptu.

Zaktualizuj Internet Explorera do wersji przynajmniej 5.5 SP2.

[5.6] W Internet Explorerze 5.0, 5.5 lub 6.0, dostaję błąd (w rodzaju "Strony nie znaleziono") podczas próby zmodyfikowania rekordu w tabeli z wieloma polami albo z polem tekstowym.

Twoja tabela nie ma ani klucza podstawowego, ani unikalnego, musimy więc używać długiego URL-a do identyfikacji tego rekordu. Przeglądarki te mają limit długości URL-a i takie sytuacje nie mają miejsca np. w Netscapie. Można obejść ten problem tworząc podstawowy lub unikalny klucz albo używając innej przeglądarki.

[5.7] Odświeżam (przeładowuję) stronę i wracam do strony z ekranem powitalnym.

Niektóre przeglądarki obsługują kliknięcie prawym klawiszem na ramkę, którą chcesz odświeżyć, więc po prostu zrób tak w prawej ramce.

[5.8] W Mozilli 0.9.7 mam problemy z wysyłaniem zmodyfikowanego zapytania w polu zapytania.

Wygląda to na błąd Mozilli: 0.9.6 było OK. Będziemy się przyglądać przyszłym wersjom Mozilli.

[5.9] W Mozilli od 0.9.? do 1.0 i w Netscapie 7.0-PR1 nie mogę napisać białego znaku w obszarze edycyjnym zapytania SQL: strona przewija się w dół.

Jest to błąd Mozilli (zobacz błąd #26882 na BugZilli).

[5.10] W Netscapie 4.75 dostaję puste linijki pomiędzy każdym wierszem danych w wyeksportowanym pliku CSV.

Jest to znany błąd Netscape'a 4.75: dodaje trochę znaków wysuwu wiersza podczas eksportu danych w trybie octet-stream. Ponieważ nie mamy możliwości wykrycia konkretnej wersji Netscape'a, nie możemy obejść tego błędu.

[5.11] Rozszerzone znaki ASCII, takie jak niemieckie litery z przegłosem (również tzw. polskie litery - przyp. tłum.) są źle wyświetlane.

Proszę upewnić się, że system kodowania znaków ustawiony w przeglądarce na ten z pliku językowego, który został wybrany na stronie startowej phpMyAdmina. Możesz też wypróbować tryb autodetekcji, który obsługują najnowsze wersje większości przeglądarek.

[5.12] Apple OS X: przeglądarka Safari zmienia specjalne znaki na "?".

Kwestia ta została zgłoszona przez użytkownika OS X, który dodaje, że Chimera, Netscape i Mozilla nie sprawiają tego problemu.

[5.13] Z Internet Explorerem 5.5 lub 6 i trybem uwierzytelniania HTTP, nie mogę zarządzać dwoma serwerami: loguję się na pierwszy, potem na drugi, ale jeśli przełączę się z powrotem na pierwszy, muszę logować się przy każdej operacji.

Jest to błąd Internet Explorera, inne przeglądarki nie zachowują się w ten sposób.

[5.14] W Operze 6 mogę się dostać do uwierzytelniania, ale potem nic się nie dzieje, jest tylko pusty ekran.

Jeśli $cfg['QueryFrameJS'] jest ustawione na TRUE, jest to błąd w Operze 6, która nie jest w stanie zinterpretować definicji ramek napisanych w JavaScript'cie. Prosimy o aktualizację co najmniej do Opery 7.


[6. Używanie phpMyAdmina]

[6.1] Nie mogę dodać nowych rekordów do tabeli / Nie mogę utworzyć tabeli - MySQL daje błąd SQL-a.

Uważnie zbadaj błąd SQL-a. Często problem jest spowodowany przez złe określenie typu pola.
Powszechnymi błędami są:

  • użycie VARCHAR bez argumentu rozmiaru
  • użycie TEXT lub BLOB z argumentem rozmiaru

Zobacz także, by potwierdzić jej prawidłowość, rozdział podręcznika MySQL dotyczący składni.

[6.2] Kiedy tworzę tabelę, klikam na pola wyboru Indeks dla dwóch kolumn, a phpMyAdmin tworzy tylko jeden indeks z tymi dwoma polami.

W phpMyAdminie 2.2.0 i 2.2.1 jest to sposób na tworzenie wielopolowych indeksów. Jeśli chcesz mieć dwa indeksy, utwórz pierwszy podczas tworzenia tabeli, zapisz, następnie wyświetl właściwości tabeli i kliknij na link Indeks, aby utworzyć drugi.

[6.3] Jak mogę wstawić wartość null do tabeli?

Począwszy od wersji 2.2.3 dla każdego pola, które może przybierać wartość null, istnieje odpowiednie pole wyboru. Przed 2.2.3 konieczne było wprowadzenie "null", bez cudzysłowów, jako wartości pola.

[6.4] Jak mogę utworzyć kopię zapasową tabeli albo bazy danych?

Kliknij na nazwie bazy danych lub nazwie tabeli w lewej ramce, pokażą się właściwości. Następnie w menu kliknij "Eksport", a będziesz mógł zrzucić strukturę, dane, albo i to, i to. Wygeneruje to standardowe zdania SQL, które będą mogły być użyte do odtworzenia bazy danych/tabeli.

Będziesz musiał wybrać "Zapisz jako plik", aby phpMyAdmin mógł przesłać wynikowy zrzut na Twoją stację. W zależności od konfiguracji PHP zobaczysz opcje kompresji zrzutu. Zobacz także zmienną konfiguracyjną $cfg['ExecTimeLimit'].

Dodatkową pomoc w tym temacie znajdziesz szukając w tym dokumencie słowa "zrzut".

[6.5] Jak mogę odtworzyć (poprzez upload) moją bazę danych lub tabelę używająć zrzutów? Jak mogę uruchomić plik ".sql"?

Kliknij na nazwie bazy danych w lewej ramce, wyświetlone zostaną właściwości. Następnie w części "Wykonanie zapytania SQL" wprowadź nazwę pliku zrzutu albo użyj przycisku Przeglądanie. Następnie kliknij Wykonanie.

Dodatkową pomoc w tym temacie znajdziesz szukając w tym dokumencie słowa "upload".

[6.6] Jak mogę użyć tabeli relacji w zapytaniu-przez-przykład?

Oto przykład tabeli z osobami, miastami i państwami, wszystkimi zamieszczonymi w bazie danych mydb. Jeśli nie masz tabeli PMA_relation, utwórz ją w sposób wyjaśniony w punkcie Konfiguracja. Następnie utwórz przykładowe tabele:

     CREATE TABLE REL_kraje (
       kod_kraju char(1) NOT NULL default '',
       opis varchar(10) NOT NULL default '',
       PRIMARY KEY (kod_kraju)
     ) TYPE=MyISAM;

     INSERT INTO REL_kraje VALUES ('K', 'Kanada');

     CREATE TABLE REL_osoby (
       id tinyint(4) NOT NULL auto_increment,
       imie_osoby varchar(32) NOT NULL default '',
       kod_miasta varchar(5) default '0',
       kod_kraju char(1) NOT NULL default '',
       PRIMARY KEY (id)
     ) TYPE=MyISAM;

     INSERT INTO REL_osoby VALUES (11, 'Marek', 'S', '');
     INSERT INTO REL_osoby VALUES (15, 'Paweł', 'S', 'K');

     CREATE TABLE REL_miasta (
       kod_miasta varchar(5) NOT NULL default '0',
       opis varchar(30) NOT NULL default '',
       PRIMARY KEY (kod_miasta)
     ) TYPE=MyISAM;

     INSERT INTO REL_miasta VALUES ('S', 'Sherbrooke');
     INSERT INTO REL_miasta VALUES ('M', 'Montréal');

Aby ustawić odpowiednie łącza i wyświetlać informacje:

  • przy tabeli "REL_osoby" kliknij Strukturę, następnie Widok relacyjny
  • Łącze: dla "kod_miasta" wybierz "REL_miasta->kod_miasta"
  • #
  • Łącze: dla "kod_kraju" wybierz "REL_kraje->kod_kraju"
  • #
  • przy tabeli "REL_miasta" kliknij Strukturę, następnie Widok relacyjny
  • w "Wybierz wyświetlane pole", wybierz "opis"
  • powtórz dwa ostatnie kroki dla tabeli "REL_kraje"

Następnie wypróbuj coś takiego:

  • Klinkij na nazwie bazy danych w lewej ramce
  • Wybierz "Zapytanie"
  • Użyj tabel: osoby, miasta, kraje
  • Kliknij na "Zmianę zapytania"
  • W wierszu pól wybierz osoby.imie_osoby i kliknij na kratkę "Pokazanie"
  • Zrób to samo dla miasta.opis i kraje.opis w innych 2 kolumnach
  • Kliknij na "Zmianę zapytania", a zobaczysz w polu zapytania, że zostały wygenerowane odpowiednie połączenia
  • Kliknij na "Wykonanie zapytania"


[6.7] Jak mogę użyć funkcji "wyświetlanego pola"?

Skorzystawszy z poprzedniego przykładu, stwórz PMA_table_info, tak jak zostało to wyjaśnione w punkcie Konfiguracja, przeglądnij tabelę osoby, i przesuń kursor myszy na kod miasta lub kod kraju.

Jak włączyć dodatkową funkcję "wyświetlanego pola": rozwijalną listę możliwych wartości, wyjaśnia FAQ 6.21.


[6.8] Jak mogę stworzyć schemat PDF mojej bazy danych?

Na początek musisz wypełnić zmienne konfiguracyjne "relation", "table_coords" i "pdf_pages".

Następnie pomyśl jak ma wyglądać Twój schemat: jakie tabele będą na jakich stronach.

  • Kliknij na nazwie bazy danych w lewej ramce
  • Wybierz "Strukturę"
  • Wybierz "Edycję stron PDF", która powinna być gdzieś na dole strony
  • Wprowadź nazwę pierwszej strony pdf i wyślij
  • Wybierz tę stronę do edycji
  • Dodaj tabelę, którą chcesz pokazać na tej stronie i jej współrzędne, a następnie wyślij.
    Na początku będziesz musiał zgadnąć współrzędne, tak więc po prostu oczekuj obszaru około 297 × 210 i umieść współrzędne tabel gdzieś w jego obrębie; będziesz miał możliwość zobaczyć, co się stało i zmienić je później.
    Na przykład x=100 i y=200 oznacza, że tabela będzie położona 200 mm poniżej i 100 mm na prawo od lewego górnego rogu.
    Tak naprawdę jeśli będziesz miał szerokość ponad 300 lub wysokość ponad 200, zostanie to automatycznie przeskalowane, ale 200×100 jest dobre, by zacząć orientować się w tym, jakich współrzędnych używać.
  • Po wysłaniu każdej tabeli będziesz miał możliwość wysłania następnych
  • Kiedy wprowadzisz wystarczającą liczbę tabel, kliknij ponownie na nazwę swojej bazy danych w lewej ramce
  • Teraz, powinieneś móc ponownie wybrać "Wyświetl schemat PDF"
    Dla testów może być użyteczne wyświetlenie także siatki, tak byś mógł zobaczyć współrzędne, których użyłeś.
    Możesz także wybrać kolor i wysłać.
  • Zapisz zaproponowany plik jako coś w rodzaju Schemat.pdf (Internet Explorer ma błąd, który może spowodować zaproponowanie nazwy bez rozszerzenia. Pod Windows rozszerzenie ".pdf" jest ważne, pod innymi systemami operacyjnymi powinno wystarczyć zapisanie pliku pod proponowaną nazwą).

[6.9] phpMyAdmin zmienia typ jednej z kolumn!

Nie, to MySQL robi ciche zmiany typów kolumn.


[6.10] Co się dzieje z podkreśleniami w nazwie bazy danych podczas tworzenia uprawnienia?

Jeśli nie umieścisz odwrotnego ukośnika przed podkreśleniem, jest to wieloznaczne nadanie uprawnień a podkreślenie oznacza "dowolny znak". Więc jeśli nazwą bazy danych jest "john_db", użytkownik dostanie prawa do john1db, john2db...

Jeśli umieścisz odwrotny ukośnik przed podkreśleniem, oznacza to że nazwa bazy danych będzie miała prawdziwe podkreślenie.

[6.11] Co oznacza osobliwy symbol ø w statystykach tabeli?

Oznacza on "średnią".


[6.12] Chciałbym poznać niektóre opcje eksportu.

"Pełne dodania" dodają nazwy kolumn przy każdym poleceniu INSERT, w celu lepszej dokumentacji (ale skutkuje to większym plik).
"Rozszerzone dodania" zapewnia krótszy plik zrzutu poprzez użycie jeden razy czasownika INSERT i nazwy tabeli.
"Użycie cudzysłowów z nazwami tabel i pól" zapewnia ochronę nazwom pól i tabel zawierającymi znaki specjalne.
"Włączenie komentarzy kolumn jako wplatanych komentarze SQL" załącza komentarze kolumn ustawione w phpMyAdminie jako komentarze SQL (/* xxx */) w zrzucie.

[6.13] Chciałbym utworzyć bazę danych z kropką w nazwie.

Jest to zły pomysł, gdyż składnia MySQL-a "baza-danych.tabela" jest zwykłym sposobem odwoływania się do bazy danych i nazwy tabeli. Co gorsza, MySQL zwykle pozwala na utworzenie bazy danych z kropką, ale nie da się ani z nią pracować, ani jej skasować.


[6.14] Jak mam ustawić analizator składni SQL?

Aby go użyć potrzebna jest bardzo nowa wersja PHP, polecana 4.3.0, z obsługą XML, PCRE i PEAR. Z linii poleceń swojego systemu uruchom "pear install Net_Socket Net_URL HTTP_Request Mail_Mime Net_DIME SOAP" aby pobrać niezbędne do działania modułu PEAR.
Jeśli używasz analizatora, powinieneś być świadom tego, że każde zdanie SQL, które wysyłasz, będzie anonimowo zapamiętane (nazwy bazy danych/tabel/kolumn, napisy, liczby zastąpione ogólnymi wartościami). Sam Mimer SQL Validator ma © 2001 Upright Database Technology. Używamy go jako bezpłatnej usługi SOAP.

[6.15] Chcę dodać pole BLOB i umieścić na nim indeks, ale MySQL pisze: "BLOB column '...' used in key specification without a key length".

Prawidłowym sposobem jest stworzenie pola bez żadnych indeksów, następnie wyświetlenie struktury tabeli i użycie dialogu "Utworzenia indeksu". Na tej stronie będziesz mógł wybrać swoje pole BLOB i ustalić wielkość indeksu, który jest warunkiem utworzenia indeksu dla pola BLOB.

[6.16] Jak mogę przemieszczać się po stronie z wieloma polami edycyjnymi?

Możesz użyć Ctrl+strzałka do poruszania się na większości stron z wieloma polami edycyjnymi (zmiana struktury tabeli, edycja rekordu, itp.). (musi być włączone w pliku konfiguracyjnym - zobacz $cfg['CtrlArrowsMoving']). Możesz też spojrzeć na dyrektywę $cfg['DefaultPropDisplay'] ('vertical') i zobaczyć, czy to ułatwia edycję.

[6.17] Transformacje: Nie mogę wprowadzić własnego typu MIME! W takim razie, do czego niby mają one służyć?!

Spokojnie :). Definiowanie typów MIME jest bezużyteczne, jeśli nie możesz dokonać na nich transformacji. Inaczej mógłbyś po prostu dodać komentarz do pola. Ponieważ wprowadzanie własnych typów MIME spowoduje poważne problemy ze sprawdzaniem składni i poprawności, wprowadza to wysokie ryzyko sytuacji wprowadzonych przez użytkownika błędnych danych. Zamiast tego musisz zainicjalizować typy MIME używając funkcji lub pustych definicji typów MIME.
Poza tym, masz cały przegląd dostępnych typów MIME. Kto zna te wszystkie typy MIME na pamięć, tak że może je wprowadzać do woli?

[6.18] Zapamiętane zapytania: Gdzie mogę je zapamiętać? Dlaczego pod polem zapytania nie ma żadnych zapamiętanych zapytań? Po co jest ta zmienna?

Każde zapytanie, które zostało wykonane, może zostać zapamiętane na stronie, gdzie wyświetlane są wyniki. Znajdziesz tak przycisk o etykiecie 'Zapamiętanie zapytania SQL' na samym dole strony.
Od momentu zapamiętania zapytania jest ono związane z bazą danych, na której je wykonujesz. Masz teraz dostęp do rozwijalnej listy zapytań na każdej stronie, na której pojawia się pole zapytania dla tej bazy danych.

Począwszy od phpMyAdmina 2.5.0, możesz również do zapytań wprowadzać zmienne. Wystarczy użyć napisu /*[VARIABLE]*/ gdziekolwiek w swoim zapytaniu. Wszystko, co zostanie wpisane w polu wartość na stronie z polem zapytania, zastąpi napis "/*[VARIABLE]*/" w zapisanym zapytaniu. Proszę jednak pamiętać, że MUSISZ stworzyć poprawne zapytanie, gdyż w przeciwnym razie nie będzie nawet możliwości zapisania go w bazie danych.
Pamiętaj także, że wszystko inne wewnątrz napisu /*[VARIABLE]*/ zostanie w zapytaniu bez zmian, tyle że pozbawione znaków /**/. Możesz więc użyć:

/*, [VARIABLE] AS mojanazwa */

co zostanie rozwinięte w zapytaniu do

, ZMIENNA as mojanazwa

gdzie ZMIENNA jest wprowadzonym w polu tekstowym napisem. Jeśli będzie to pusty napis, żadne zmiany nie zostaną dokonane.

Bardziej rozbudowany przykład. Powiedzmy, że zapisałeś następujące zapytanie:

SELECT Nazwa, Adres FROM adresy WHERE 1 /* AND Nazwa LIKE '%[VARIABLE]%' */

Powiedzmy, że wpisujesz teraz "phpMyAdmin" jako zmienną dla tego zapytania; pełnym zapytaniem będzie:

SELECT Nazwa, Adres FROM adresy WHERE 1 AND Nazwa LIKE '%phpMyAdmin%'

Jedno zapytanie może zawierać wiele wystąpień /*[VARIABLE]*/.
UWAGA NA BRAK SPACJI wewnątrz konstrukcji "/**/". Każda spacja tam wstawiona będzie później również występować w zapytaniu i może powodować nieoczekiwane wyniki, zwłaszcza przy rozwijaniu zmiennej wewnątrz wyrażenia "LIKE ''".
Początkowe zapytanie musi dać w wyniku przynajmniej jeden rekord, by móc być zapamiętanym. Można to obejść używając dobrze umiejscowionych komentarzy "/**/".

[6.19] Jak mogę stworzyć prosty dokument LaTeXowy by dołączyć eksportowaną tabelę?

Możesz po prostu włączyć tabelę do swoich dokumentów LaTeXowych, najmniejszy przykładowy dokument powinien wyglądać jak poniższy (zakładając, że tabela została wyeksportowana do pliku table.tex):

\documentclass{article}
\usepackage{longtable}

\begin{document}

\include{table}

\end{document}

[6.20] W MySQL-u 4 widzę mnóstwo baz danych, które do mnie nie należą i nie mam do nich dostępu.

Uaktualnienie do MySQL-a 4 zwykle daje użytkownikom globalne uprawnienie: CREATE TEMPORARY TABLES (tworzenie tabel tymczasowych). Uprawnienie to pozwala użytkownikom widzieć nazwy baz danych. Zobacz raport o błędzie.

Jeżeli użytkownicy nie potrzebują tego uprawnienia, możesz je usunąć, a ich lista baz danych ulegnie skróceniu.

[6.21] Jak mogę w trybie edycji/wstawiania zobaczyć listę możliwych wartości jakiegoś pola w oparciu o zewnętrzną tabelę?

Musisz ustawić odpowiednie łącza pomiędzy tabelami, a także ustawić "wyświetlane pole" w tabeli zewnętrznej. Przykład znajduje się w FAQ 6.6. Wtedy, jeśli w tabeli zewnętrznej jest ich 200 lub mniej, będzie dostępna rozwijalna lista dostępnych wartości.


[7. projekt phpMyAdmin]

[7.1] Znalazłem błąd. Jak mam poinformować programistów?

Nasz Tropiciel Błędów (Bug Tracker) jest usytuowany na http://sourceforge.net/projects/phpmyadmin/ w części Bugs (błędy należy zgłaszać w języku angielskim - przyp. tłum.).

Ale proszę najpierw przedyskutować (po angielsku - przyp. tłum.) błąd z innymi użytkownikami:
http://sourceforge.net/projects/phpmyadmin/ (i wybierz Forums)

[7.2] Chcę przetłumaczyć nowe komunikaty na nowy język albo zaktualizować istniejący już język, gdzie mam zacząć?

Zawsze używaj aktualnej wersji CVS swojego pliku językowego. Jeśli chodzi o nowy język, rozpocznij od english-iso-8859-1.inc.php3. Jeśli nie wiesz jak zdobyć wersję CVS, zapytaj jednego z programistów.
Warto zauważyć, że staramy się nie używać encji html, takich jak &eacute;, w tłumaczeniach, gdyż prawidłowy system kodowania znaków jest zdefiniowany w pliku językowym. Encje HTML powodują błędne wyświetlanie tekstu w komunikatach JavaScriptu. Z drugiej strony, niektóre encje są tam niezbędne, by uzyskać cudzysłowy, niełamalne spacje, znaki &, znaki mniejszości i większości.
Możesz umieścić swoje tłumaczenia jako plik zip, aby uniknąć utraty specjalnych znaków, w tropicielu tłumaczeń (translation tracker) na sourceforge.net.
Byłoby dobrym pomysłem zasubskrybować listę dyskusyjną phpmyadmin-translators, gdyż jest to miejsce, gdzie prosimy o tłumaczenie nowych komuniktatów.

[7.3] Chciałbym pomóc w rozwoju phpMyAdmina. Co powinienem zrobić?

W przypadku nowych programistów preferowana jest następująca metoda:

  1. pobierz anonimowo aktualne drzewo CVS:
    cvs -d:pserver:anonymous@cvs.phpmyadmin.sourceforge.net:/cvsroot/phpmyadmin login
    [Hasło: po prostu naciśnij klawisz Enter]
    cvs -z3 -d:pserver:anonymous@cvs.phpmyadmin.sourceforge.net:/cvsroot/phpmyadmin checkout phpMyAdmin
    [To utworzy nowy pokatalag o nazwie phpMyAdmin]
  2. dodaj swoje rzeczy
  3. umieść zmodyfikowane pliki (starowane i zgzipowane) w tropicielu błędów konta phpMyAdmina na SourceForge.

Dostęp z możliwością zapisu do drzewa CVS jest nadawany jedynie doświadczonym programistom, którzy już poprzednio mieli wkład w coś użytecznego dla phpMyAdmina.
Rzuć także okiem na punkt Programiści.


[8. Bezpieczeństwo ]

[8.1] Alarm bezpieczeństwa, datowany na 2003-06-18.

Ostatnia aktualizacja tego FAQ: 2003-07-22.

Zespół programistów phpMyAdmina otrzymał informację o następującym alarmie bezpieczeństwa: http://www.securityfocus.com/archive/1/325641.

Zespół żałuje, że autor nie skontaktował się z nami przed wysłaniem tego ostrzeżenia. Tym niemniej, oto nasza aktualna odpowiedź na zastrzeżenia:

  • "Atak directory transversal"

    Problem ten został naprawiony w wersji 2.5.0, chociaż autor zgłasza wersję rozwojową 2.5.2 jako podatną na atak, czego nie udało nam się powtórzyć.

  • "Zdalne pobierania lokalnych plików"

    Tytuł ten jest mylący, jako że autor napisał w swoim tekście: "Proszę zauważyć, że nie można pobrać plików ( jedynie katalogi )".

  • "Zdalne listowanie wewnętrznego katalogu"

    Pobranie listy katalogu phpMyAdmina było możliwe (wątpimy, aby mogło to spowodować jakiekolwiek straty), ale poprawiliśmy to w wersji 2.5.2.

  • "XSS i Path disclosures"

    Większość problemów z XSS została naprawiona w wersji 2.5.0. Pozostałe zostały naprawione w wersji 2.5.2.

    Sądzimy, że problem z path disclosure również został rozwiązany w wersji 2.5.2.

  • "Słabość kodowania informacji"

    Sądzimy, że wykorzystanie tej słabości jest trudne do osiągnięcia. Jednakże wersja rozwojowa 2.5.2 koduje hasło przy pomocy dobrze znanego algorytmu blowfish.


Informacje dla programistów

phpMyAdmin jest projektem Open Source, a więc jesteś zaproszony, by go rozwijać. Wiele wspaniałych funkcji zostało napisanych przez innych ludzi, więc także ty możesz pomóc by phpMyAdmin stał się użytecznym narzędziem.

Jeśli planujesz rozwijać źródła, prosimy o przeczytanie poniższych informacji:

  • Wszystkie pliki włączają header.inc.php3 (layout), libraries/common.lib.php3 (wspólne funkcje) i config.inc.php3.
    Wszystkie dane konfiguracyjne znajdują się w config.inc.php3. Prosimy nie umieszczać tam kodu innego rodzaju.
    Często używane funkcje powinny zostać dodane do libraries/common.lib.php3, a bardziej konkretne mogą zostać dodane w obrębie biblioteki umieszczonej w podkatalogu libraries.
  • Oczywiście możesz użyć takiego stylu kodowania, jakiego tylko chcesz. Ale pamiętaj, by utrzymać swój kod tak prostym jak to możliwe: osoby początkujące używają phpMyAdmina jako przykładowej aplikacji.
    Jak to tylko możliwe, chcemy by skrypty były z jednej strony zgodne z XHTML-em 1.0 i CSS2, a z drugiej strony trzymały się standardów kodowania PEAR. Prosimy na to uważać.
  • Proszę trzymać się konwencji nazywania plików. Rzeczy związane z tabelami lądują w tbl_*.php3, kod związany z bazami danych w db_*.php3, narzędzia związane z serwerem w server_*.php3 itd.
  • Prosimy nie używać "rozwleczonych" napisów w kodzie, zamiast tego dodaj napis (przynajmniej) do english-iso-8859-1.inc.php3 i wy-print()-uj go.
  • Jeśli chcesz być naprawdę pomocny, wpisz się do ChangeLogu.
  • Moduł DBG (PHP Debugger DBG) jest teraz obsługiwany przez phpMyAdmina, by ułatwić programistom debugowanie i profilowanie kodu.
    Więcej informacji można znaleźć przy opisie opcję konfiguracyjnej $cfg['DBG']*.
    Ku pamięci Promu Kosmicznego Columbia (STS-107), który został utracony w czasie wejścia w atomsferę Ziemi i ku pamięci dzielnych mężczyzn i kobiet, którzy poświęcili życie dla mieszkańców Ziemi.

Wyrazy uznania

phpMyAdmin - Wyrazy uznania
===========================

Wyrazy uznania, w kolejności chronologicznej
--------------------------------------------

- Tobias Ratschiller <tobias.ratschiller_at_maguma.com>
    * twórca projektu phpmyadmin
    * opiekun projektu od roku 1998 do lata 2000

- Marc Delisle <DelislMa_at_CollegeSherbrooke.qc.ca>
    * wersja wielojęzyczna
    * różne poprawki i usprawnienia
    * współadministrator projektu

- Olivier Müller <om_at_omnis.ch>
    * zapoczątkował projekt phpMyAdmin na SourceForge'u w marcu 2001
    * zsynchronizował istniejące drzewa CVS z nowymi funkcjami i poprawkami
    * usprawnienia wielojęzykowości, dynamiczny wybór języków
    * aktualny opiekun projektu
    * wiele poprawek błędów i usprawnień

- Loïc Chapeaux <lolo_at_phpheaven.net>
    * napisał od nowa i zoptymalizował rzeczy związane z JavaScriptem,
      DHTML-em i DOM-em
    * przepisał skrypty, tak że pasują do standardów kodowania PEAR
      i generują kod zgodny z XHTML1.0 i CSS2
    * usprawnił system wykrywania języka
    * wiele poprawek błędów i usprawnień

- Robin Johnson <robbat2_at_users.sourceforge.net>
    * kontrola obsługi bazy danych
    * kody typów tabel
    * uwierzytelnianie na podstawie IP
    * konfiguracja oparta na bazie danych (nie skończona)
    * analizator składni SQL
    * analizator poprawności SQL
    * wiele poprawek błędów i usprawnień

- Armel Fauveau <armel.fauveau_at_globalis-ms.com>
    * funkcja zapamiętywania zapytań
    * funkcja wielu zrzutów
    * funkcja zrzutów gzip
    * funkcja zrzutów zip

- Geert Lund <glund_at_silversoft.dk>
    * różnorodne poprawki
    * moderator forum użytkowników phpMyAdmina na phpwizard.net

- Korakot Chaovavanich <korakot_at_iname.com>
    * funkcja "dodania jako nowego rekordu"

- Pete Kelly <webmaster_at_trafficg.com>
    * napisał od nowa i poprawił kod zrzutu
    * poprawki błędów

- Steve Alberty <alberty_at_neptunlabs.de>
    * napisał od nowa kod zrzutu dla PHP4
    * statystyki tabel MySQL
    * poprawki błędów

- Benjamin Gandon <gandon_at_isia.cma.fr>
    * główny autor wersji 2.1.0.1
    * poprawki błędów

- Alexander M. Turek <derrabus_at_gmx.de>
    * eksporty XML
    * funkcje związane z MySQL-em 4
    * różnorodne funkcje i poprawki
    * aktualizacje niemieckiego pliku językowego

- Mike Beck <mike.beck_at_ibmiller.de>
    * automatycznie złączenia w zapytaniu-przez-przykład
    * łączenie kolumn w widoku do wydruku
    * widok relacyjny

- Michal Cihar <nijel_at_users.sourceforge.net>
    * funkcja rozszerzonego tworzenia/pokazywania indeksów
    * funkcja używania odrębnego kodowania znaków dla HTML i dla MySQL
    * aktualizacje czeskiego pliku językowego

- Christophe Gesché z projektu "MySQL Form Generator
  for PHPMyAdmin" (http://sourceforge.net/projects/phpmysqlformgen/)
    * zasugerował łatę do wielu podglądów wydruku tabeli

- Garvin Hicking <hicking_at_faktor-e.de>
    * napisał łatę dla pionowego widoku wierszy tabeli
    * napisał okno zapytania oparte na JavaScript'cie i historię SQL
    * usprawnienie komentarzy kolumn/baz danych
    * tranformacje (MIME) dla kolumn
    * użycie własnych aliasów nazw dla baz danych w lewej ramce
    * pionowe wyświetlanie strony właściwości kolumn
    * poprawki błędów, mniejsze funkcje

- Yukihiro Kawada <kawada_at_den.fujifilm.co.jp>
    * funkcja konwersji japońskiego kodowania kanji

- Piotr Roszatycki <d3xter_at_users.sourceforge.net> i Dan Wilson
    * tryb uwierzytelniania cookie

- Axel Sander <n8falke_at_users.sourceforge.net>
    * funkcja relacyjnych łączy w tabeli

- Maxime Delorme <delorme.maxime_at_free.fr>
    * schematy PDF, podziękowania również dla Olivier Plathey'a za
      bibliotekę "FPDF" (zobacz http://www.fpdf.org/).

- Olof Edlund <olof.edlund_at_upright.se>
    * serwer analizowania poprawności SQL

- Ivan R. Lanin <ivanlanin_at_users.sourceforge.net>
    * logo phpMyAdmina

- Mike Cochrane <mike_at_graftonhall.co.nz>
    * biblioteka blowfish z projektu Horde

Ponadto, niżej wymienione osoby przyczyniły się do niewielkich zmian,
ulepszeń, poprawek lub udostępniły nowe wersje językowe od wersji 2.1.0:

Bora Alioglu, Ricardo ?, Sven-Erik Andersen, Alessandro Astarita,
Péter Bakondy, Borges Botelho, Olivier Bussier, Neil Darlow,
Mats Engstrom, Ian Davidson, Laurent Dhima, Kristof Hamann, Thomas Kläger,
Lubos Klokner, Martin Marconcini, Girish Nair, David Nordenberg, Andreas Pauley,
Bernard M. Piller, Laurent Haas, "Sakamoto", Yuval Sarna,
www.securereality.com.au, Alexis Soulard, Alvar Soome, Siu Sun, Peter Svec,
Michael Tacelosky, Rachim Tamsjadi, Kositer Uros,
Luís V., Martijn W. van der Lee,
Algis Vainauskas, Daniel Villanueva, Vinay, Ignacio Vazquez-Abrams, Chee Wai,
Jakub Wilk, Thomas Michael Winningham, Vilius Zigmantas, "Manuzhai".


Oryginalne wyrazy uznania wersji 2.1.0
--------------------------------------

    Praca ta jest oparta na MySQL-Webadminie Petera Kuppelwiesera. To jego
    pomysłem było stworzenie opartego na www interfejsu do MySQL używającego
    PHP3. Pomimo że nie użyłem wcale jego kodu źródłowego, niektóre pomysły
    zostały od niego pożyczone. phpMyAdmin został stworzony, ponieważ Peter
    powiedział mi, że nie zamierza w przyszłości rozwijać swego (świetnego)
    narzędzia.
    Podziękowania dla
    - Amalesha Kempfa <ak-lsml_at_living-source.com>, który napisał kod
      sprawdzający podczas usuwania tabeli lub bazy danych. Zasugerował również,
      że powinna być możliwość określenia klucza podstawowego w tbl_create.php3.
      Dla wersji 1.1.1 napisał ldi_*.php3-set (import plików tekstowych), jak
      również raport o błędach. Do tego wiele małych usprawnień.
    - Jana Legenhausena <jan_at_nrw.net>: Dokonał wielu zmian, które
      zostały wprowadzone w 1.3.0 (włączając w to całkiem istotne, takie jak
      uwierzytelnianie). Ulepszył funkcję zrzutów tabeli dla 1.4.1. Do tego
      poprawki błędów i pomoc.
    - Marca Delisle'a <DelislMa_at_CollegeSherbrooke.qc.ca> uczynił
      phpMyAdmina niezależnym od języka przez wydzielenie napisów do osobnego
      pliku. Napisał także francuskie tłumaczenie.
    - Alexandra Bravo <abravo_at_hq.admiral.ru> który napisał
      tbl_select.php3, funkcję wyświetlająca jedynie niektóre pola tabeli.
    - Chrisa Jacksona <chrisj_at_ctel.net>: dodał obsługę funkcji MySQL
      w tbl_change.php3. Dodał również funkcję "Zapytania przez
      przykład" w 2.0.
    - Dave'a Waltona <walton_at_nordicdms.com>: dodał obsługę wielu
      serwerów i regularnie pisze poprawki błędów.
    - Gabriela Asha <ga244_at_is8.nyu.edu>: napisał funkcje swobodnego
      dostępu dla 2.0.6.
    Osoby wymienione poniżej przyczyniły się do niewielkich zmian, ulepszeń,
    poprawek błędów lub udostępniły nowe wersje językowe:
    Jim Kraai, Jordi Bruguera, Miquel Obrador, Geert Lund, Thomas Kleemann,
    Alexander Leidinger, Kiko Albiol, Daniel C. Chao, Pavel Piankov,
    Sascha Kettler, Joe Pruett, Renato Lins, Mark Kronsbein, Jannis Hermanns,
    G. Wieggers.

    I dzięki wszystkim innym, którzy wysłali do mnie e-maile z sugestiami,
    informacjami o błędach albo po prostu z opiniami.