PhpMyAdmin/Tutoriál
PhpMyAdmin/Tutoriál
Konfigurace
editovat- Radek Hulán: Nastavte si lépe phpMyAdmin
dpkg -L phpmyadmin
- /etc/phpmyadmin
- /usr/share/doc/phpmyadmin
- /usr/share/doc/phpmyadmin/examples/create_tables_mysql_4_1_2+.sql
- /usr/share/phpmyadmin
- /usr/share/phpmyadmin/scripts/setup.php
- /usr/share/phpmyadmin/scripts/create_tables.sql
- /usr/share/phpmyadmin/libraries/config.default.php – defaultní konfigurace; co se nám nelíbí, to můžeme změnit v /etc/phpmyadmin/config.inc.php
Např:
$cfg['LeftDisplayLogo'] = FALSE;// display logo at top of left frame
$cfg['ShowPhpInfo'] = TRUE; // show PHP info link
$cfg['ShowBlob'] = TRUE; // display blob field contents
$cfg['LoginCookieValidity'] = 3600; //validity of cookie login (in seconds) = za jak dlouho budeme odpojeni kvůli neaktivitě (defaultně 1800 sekund)
$cfg['MaxRows'] = 1000; // maximum number of rows to display
$cfg['RepeatCells'] = 20; // repeat header names every X cells? (0 = deactivate)
$cfg['LimitChars'] = 500; // Max field data length in browse mode for all non-numeric fields. Can be turned off by a toggle button on the browse page. (Tak to jsem fakt nenašel, kde se to dá vypnout)
Výsledkem defaultního zobrazení pak bude:
zobrazit 500 řádků začínající od 0 ve vodorovném režimu a opakovat hlavičky po 20 řádcích.
Problém velikosti importovaného souboru
editovatZásadně to ovlivní nastavení PHP, které se konfiguruje v
/etc/php5/apache2/php.ini
Vidíme zakomentované původní hodnoty a pod nimi nastavené nové:
;memory_limit = 16M ; Maximum amount of memory a script may consume (16MB) memory_limit = 64M ;post_max_size = 8M post_max_size = 2000M ;upload_max_filesize = 2M upload_max_filesize = 4000M
Nedoporučuji zapisovat velké hodnoty jako G, tj. např. namísto 2000M napsat 2G. PhpMyAdmin to sežere v pohodě, ale zanedlouho zjistíme, že nelze ukládat editace v MediaWiki – nejspíš nějaký bug.
I přesto se však stane, že v poli pro zadání vstupního souboru pro import nám phpmyadmin hlásí:
File to import Location of the text file _________ [Browse...] (Max: 8,192 KiB) Character set of the file: ________ Imported file compression will be automatically detected from: None, gzip, bzip2, zip
Kde se vzalo to omezení na 8,192 KiB?
Jedna věc je, že po editaci /etc/php5/apache2/php.ini musíme restartovat apache2:
# apache2ctl restart
a poté vidíme, že maximální velikost importovaného souboru se zvětší na 2G. Je to minimální hodnota z výše nastavených.
Kdyby nás to zajímalo, jak to phpmyadmin nastavuje, můžeme hledat v jeho skriptech /usr/share/phpmyadmin a zjistíme, že to, co se zde zobrazuje, je velikost proměnné
$max_upload_size
která se nastaví v knihovně /usr/share/phpmyadmin/libraries/Config.class.php
/**
* Maximum upload size as limited by PHP
* Used with permission from Moodle (http://moodle.org) by Martin Dougiamas
*
* this section generates $max_upload_size in bytes
*/
function checkUploadSize()
{
if (! $filesize = ini_get('upload_max_filesize')) {
$filesize = "5M";
}
if ($postsize = ini_get('post_max_size')) {
$this->set('max_upload_size',
min(PMA_get_real_size($filesize), PMA_get_real_size($postsize)));
} else {
$this->set('max_upload_size', PMA_get_real_size($filesize));
}
}
pma tabulky
editovatJe to už v tom skriptu /usr/share/doc/phpmyadmin/examples/create_tables_mysql_4_1_2+.sql, ale dá se to udělat i ručně, abychom viděli, jak to proběhne:
jako MySQL root:
CREATE DATABASE `phpmyadmin` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; GRANT SELECT, INSERT, DELETE, UPDATE ON `phpmyadmin`.* TO 'pma'@localhost;
cd /usr/share/doc/phpmyadmin/examples
mysql -uroot -pheslo_pro_roota < create_tables_mysql_4_1_2+.sql
/etc/phpmyadmin/config.inc.php
odkomentuje se:
- /* Optional: User for advanced features */
- /* Optional: Advanced phpMyAdmin features */
phpMyAdmin se pokusil připojit k MySQL serveru, a ten odmítl připojení. Zkontrolujte jméno serveru, uživatelské jméno a heslo v souboru config.inc.php a ujistěte se, že jsou totožné s těmi, které máte od administrátora MySQL serveru.
Moc nechápu, jak je to s tím nastavením hesla pro pma.
Dříve, než vytvoříme oprávnění pro uživatele 'pma', musíme ho ručně v databázi vytvořit. To lze snadno i z nenakonfigurovaného admina. Při vytváření tohoto uživatele mu také vytvoříme heslo. Toto heslo se pak zapíše do config.inc.php.
Pozor na chybu v phpMyAdminu 2.9 + !! Pokud jej nastavujete pohodlně přes skript (http://***kde je ten adnmin**/scripts/setup.php, tak je zde volba MemoryLimit. tato je nastavena na 32, a na prvni pohled se zdá, že se jedná o veličinu MB, Chyba. Jedná se o bajty. Pokud tedy nic nezměníte, bude tento limit 256kb (nejmenší možná defaultní hodnota) a admin při vykonávání SQLek a jiných náročnějších příkazů stále hlásí překročení povoleného limitu. Čili vyplňujte '32M' nebo '32000000' dle libosti..
pmatabulky podruhé
editovat- V Ubuntu/10.04 je phpMyAdmin Version: 3.3.2deb1 a MySQL Server version: 5.1.41-3ubuntu12.1
- tam už není skript /usr/share/doc/phpmyadmin/examples/create_tables_mysql_4_1_2+.sql ale create_tables.sql
Problém
editovatPo spuštění můžeme obdržet hlášku
The additional features for working with linked tables have been deactivated. To find out why click here. Connection for controluser as defined in your configuration failed.
a po kliknutí:
$cfg['Servers'][$i]['tracking'] ... not OK [ Documentation ] Tracking: Disabled Connection for controluser as defined in your configuration failed.
Usoudím, že může být problém v pmadb
Najdu
sudo su
cd /usr/share/doc/phpmyadmin/examples
ls
config.manyhosts.inc.php
config.sample.inc.php
create_tables.sql.gz
signon.php
upgrade_tables_mysql_4_1_2+.sql.gz
gunzip *.gz
less create_tables.sql
Koukám, v MySQL je user phpmyadmin, ale ne pma. Má to být ten samý?
Ještě čtu:
Takže:
dpkg-reconfigure -plow phpmyadmin
Po novém zalogování do phpmyadmina je ty chybové hlášky stejné jako předtím, takže pokračuji:
pma-configure
Tím pouze odemknu konfigurační skripty.
Jdu na:
Ale dlouho nechápu, co to tady na mě chce za přístupové jméno a heslo. Postupně zkouším, nic z toho nefunguje:
- root, rootovské pro MySQL server.
- root, heslo pro ubuntu
- root, bez hesla
- admin, bez hesla
- pma, bez hesla
- phpmyadmin, bez hesla
- výše uvedené, s oběma rootovskými hesly
Také nechápu, jaké heslo nastavil předchozí skript pro uživatele phpmyadmin, když se na žádné neptal? Náhodně vygenerované anebo stejné, jako pro roota? Náhodně vygenerované není, pokusem jsem zjistí, že toho uživatele vytvoří a přidělí mu pokaždé stejné heslo.
Aha, tak konečně jsem to objevil. To heslo uživatele pma se nastavilo při první konfiguraci phpmyadminu. Je uložené v /etc/dbconfig-common/phpmyadmin.conf a skriptem dpkg-reconfigure se už nemění! Je to bug?? Ale stejně se s tímhletím heslem do MySQL nedostanu.
Ale uživatel phpmyadmin by tu snad být neměl, protože ta konfigurace by měla jít nastavit i bez pma tabulek, ne?
V následujícím poučení nenajdu:
No tak zedituji /etc/phpmyadmin/config.inc.php ručně
Ne. Zkusím celý phpmyadmin přeinstalovat.
odinstalování phpmyadmin
editovatKoukám, i když jsem nechal vymazat databázi phpmyadmin, tak user pma v tabulkách mysql zůstal.
nová instalace
editovat- nastavuji phpmyadmin
- nastavit pomocí dbconfig-common? Ano. (to je zřejmě utilita na vytváření databází, tabulek a záznamů v mysql)
- zeptá se rootovské (správcovské) heslo pro MySQL
- zeptá se na "Aplikační MySQL heslo pro balík phpmyadmin". Prázdné pole=>je náhodné. Bude to to heslo pro pma??
- na jaký server? apache2
Přednastavuji balíky... Instaluji balík phpmyadmin. (Čtu databázi ... nyní je nainstalováno 209479 souborů a adresářů.) Rozbaluji phpmyadmin (z .../phpmyadmin_4%3a3.3.2-1_all.deb) ... Zpracování spouštěčů pro balík doc-base ... Processing 1 added doc-base file(s)... Registering documents with scrollkeeper... Zpracování spouštěčů pro balík man-db ... Nastavuji balík phpmyadmin (4:3.3.2-1) ... dbconfig-common: writing config to /etc/dbconfig-common/phpmyadmin.conf Creating config file /etc/dbconfig-common/phpmyadmin.conf with new version Creating config file /etc/phpmyadmin/config-db.php with new version granting access to database phpmyadmin for phpmyadmin@localhost: success. verifying access for phpmyadmin@localhost: success. creating database phpmyadmin: success. verifying database phpmyadmin exists: success. populating database via sql... done. dbconfig-common: flushing administrative password * Reloading web server config apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName ...done.
Takže se vytvořila databáze phpmyadmin s userem phpmyadmin. Ale nedá se na toho uživatele zalogovat!
Aha. Už to mám. Bug jak prase. Když heslo obsahuje mezeru, tak se v mysql databázi nastaví jako heslo jen ta část hesla před mezerou, zatímco v /etc/dbconfig-common/phpmyadmin.conf je to heslo celé.
bug report
editovatReportuji na: https://bugs.launchpad.net/ubuntu/+source/dbconfig-common/+filebug
Problem with a password containing space char Description: Ubuntu 10.04 LTS Release: 10.04 dbconfig-common version: 1.8.44ubuntu1 Process of instalation (for example) phpmyadmin: * the installation script uses dbconfig-common * the bug occurs, when choosing any pasword (for phpmyadmin), containing space character, for example aaaa bbbb In such case: * /etc/dbconfig-common/phpmyadmin.conf contains the correct line: dbc_dbpass='aaaa bbbb' * but the password of the user phpmyadmin in the table mysql/user is truncated and set to 'aaaa' As the result: * after logging into phpmyadmin the error appears: "Connection for controluser as defined in your configuration failed." * the resulting truncated password which is actually set by dbconfig-common may be VERY WEAK (serious security hole) I suppose it's bug of dbconfig-common and not a bug of phpmyadmin. (But maybe I'm wrong.) Workaround: * You must verify the password in the mysql database and correct it by hand with help of the mysql client. * don't use passwords containing space character The next problem: When attempting to reconfigure the phpmyadmin interactively by means of # dpkg-reconfigure -plow phpmyadmin there is no subsequent question about phpmyadmin password. The original (corrupted) password remain unchanged even if the username was changed (for example, from 'phpmyadmin' to 'pma'). The file /etc/dbconfig-common/phpmyadmin.conf is updated OK, but the new record in the table mysql/user is created with the same (truncated) password and the old record is still remaining in the table (without the user knowing), which increases the security vulnerability.
Bug dostal číslo 584943
Základní operace
editovatVytvoření databáze a tabulek:
- ovládání je celkem intuitivní – viz např. phpMyAdmin (2.) - základní používání
- doporučuji kódování UTF-8 Unicode (utf8), lokace pro češtinu: utf8_czech_ci
- úložiště:
- MyISAM – defaultní
- InnoDB – podporuje transakce aj.
Relace
editovatTypickým příkladem jsou tabulky zak a obj (zákazníci a objednávky). V obou tabulkách je sloupec c (číslo zákazníka). Jeden zákazník může mít více objednávek