четвртак, 25. децембар 2008.

Wampserver 2.0 Korišćenje

Nakon instalacije koju sam opisao kao standardnu windows instalaciju (Next, Next, ... ) možemo iz menija pokrenuti wampserver.


Nakon pokretanja, wampserver ikona će se pojaviti na trayu windowsa, odakle možemo krenuti sa pristupom, podešavanjem i slično. Desnim klikom (kliknemo desno dugme na mišu) dobijamo meni prikazan na slici:

Iz njega je moguće: izaći ili "ugasiti" wampserver (opcija exit), odabrati jezik - Language (pogadjate srpski nije podržan), dobiti pomoćne informacije (help), osvežiti indikatore rada (refresh) i saznati inforacije o autoru ovog projekta (About).

Levim klikom (opis kao za desni ali je levi u pitanju) daje meni koji je znatno bogatiji opcijama.
Tu su ikone za pristup localhostu, phpMyAdmin i SQLiteManageru. Već smopominjali da su phpMyAdmin i SQLiteManager tu radi lakšeg rada sa bazom podataka. Biranjem localhost dobijamo ekran na kome su prikazane verzije i opcije koje su instalirane.

Što se opcija menija Apache, PHP i MySQL tiče o njima ćemo drugom prilikom, u svakom slučaju namenjene su konfigurisanju, pokretanju, verzionisanju Apache-a, PHP-a i MySQL-a.

Opcija www direktorijum otvara explorer u direktorijumu c:\wamp\www. To je direktorijum u koji smeštate svoja ili tudja aplikativna rešenja zbog kojih ste inače skinuli, instalirali wamp server.

Opcija menija Start All Services odnosno Stop All Services, startovaće odnosno stopirati sve servise koje nam donosi WampServer - MySQL bazu i Apache web server. Pogadjate Restart All Services opcija proizvešće efekat kao da su svi servisi stopirani a zatim startovani.

Nakon startovanja wampservera poslednja opcija menija je "Put online", odnosno server se nalazi u offline stanju. Ako server stavite u online stanje ta opcija postaje "Put offline". Prirodno je pitati šta je online a šta offline? Kada je server u "offline" stanju on je dostupan samo lokalnoj mašini odnosno windowsu na kome radite i niko ne može da vam pridje, kada ga prebacite u "online" stanje serveru se može pristupati sa mreže. Zgodno, zar ne?

Pristup serveru nakon startovanja (opcija menija localhost)

Europiana - Beta - Drugi put

Šta možete da uradite na Europiani – ili zašto bi ste posetili taj sajt?

Adresa: http://www.europeana.eu/

Pretraživanje Europeane

Na Europiani možete pretraživati milione digitalnih objekata koje su obezbedili evropski muzeji, galerije, arhive, biblioteke i druge organizacije (koje poseduju audio-visualne arhive).

  • Pretraživanje je jednostavno. Samo se upitate ko (who), šta (what), gde (where) ili kada (when) vas interesuje i otkucajte te reči u Europianinom polju za pretraživanje. Ako se ustručavate probajte:
  • Who:Imena autora, arhitekata, umetnika, koreografa, kompozitora, dirigenata, igrača, režisera, muzičara ili fotografa.
  • What: naslovi knjiga, poema, novina, slika, fotografija, filmova ili televizijskih programa
  • Where: Imena varoši, gradova ili sela u Evropi ili celog sveta
  • When: Datumi (na primer: 1945) kao godina kada je neko rodjen ili slavni datum u istoriji ili period (na primer: Roman ili Medieval).
Koristeći napredno pretraživanje (advanced search) moguće je specificirati i reči title (naslov) i imena krearoa - creators (na primer authors, artists, musicians itd) ili datume (dates – 1945 na primer). Moguće je i kombinovati kriterijume pretraživanja (na primer: title:hamlet and date:1983).

Rezultati pretraživanja

Rezultati pretraživanja grupisani su po tipu digitalnog objekta: tekstovi (text), slike (images), video i zvuk (sound):
  • Tekst uključuje: knjige, pisma, arhivske papire, disertacije, poeme, novine, članke, faksimile, manuskripte i note.
  • Slike uključuju: slike, crteže, grafike, fotografije, slike muzejskih objekata, mape, grafičke dizajne i muzičke beleške (notne sveske)
  • Video uključuje: filmove, broadcaste najnovijih vesti, televizijske programe
  • Zvuk uključuje: muziku i govore sa ploča, traka, diskova i radio najava.
Moguće je odabrati da li želite da vam se rezultati prikažu kao lista ili kao tabela.

Detaljne informacije o nekom objektu dobijaju se klikom na njega u rezultujućoj listi.

U slucaju da se dobije previše rezultata, uslovima pretraživanja mogu se dodati jezik (language), zemlja (country), datuma (date), provider ili tip (type) koristeći meni sa leve strane stranice sa rezultatima.

понедељак, 22. децембар 2008.

Dia - Alternativa MS Visio-u

Dia je napravljena po uzoru na MS Windows program “Visio”. Možete je koristiti za crtanje mnogih vrsta dijagrama. Opremljena je specijalnim objektima za crtanje modela objekti-veze, UML dijagrama, tokova podataka, skica web sajtova, i elektronskih kola. Napredni korisnici mogu dodati nove oblike kreiranjem XML fajlova koji su podskup SVG-a (ukoliko vam neka od skraćenica nije jasna trenuto niste napredni korisnik, sto svakako ne znači da nećete biti).

Diagram je moguće sačuvati u posebnom XML formatu (gzippovan po defaultu da bi se sačuvao prostor), a moguće je i eksportovati dijagram u EPS ili SVG format.

Download fajl je nekih 12-ak megabajta a sama instalacija je potpuno pravolinijska, next, next, lokacija, next ...



Korisne adrese:
Home page: http://live.gnome.org/Dia
Download: http://live.gnome.org/Dia/Download
Podržane platforme: Windows, Lunix
Trenutna verzija: 0.96.1-8

уторак, 16. децембар 2008.

WAMP - Web razvojno okruženje za Windows

WampServer 2.0

Moguća alternativa XAMPP svakako je WAMP. WAMP je web razvojno okruženje za Windows koje čine Apache, PHP, MySQL a radi lakšeg rada sa bazom tu su i PHPMyAdmin i SQLiteManager. Znatno manji download fajl (oko 16Mb) je neophodan za instalaciju, koja je u duhu Windows-a, što će reći par Next-ova, I accept..., izbor lokacije i malo čekanja! Oni zainteresovani za download mogu krenuti odavde.

Fino podešavanje je moguće bez ručnog editovanja konfiguracionih fajlova, koristeći sistem menija koji se dobija desnim klikom na ikonu WampServera u tray-u.

Ono što je prednost ovog rešenja je mogućnost da nakon što izvršite instalaciju možete dovući (kroz addon) i druge verzije Apache servera, MySQL-a i PHP-a i time podesite sebi okolinu kakva vam je u produkciji.

Korisne adrese:
Home page: http://www.wampserver.com/en/
Download: http://www.wampserver.com/en/download.php

понедељак, 18. фебруар 2008.

MySQL SHOW u borbi protiv zaborava

Dok sam bio mladji, lepši, zgodniji, ... pamtio sam sve, izmedju ostalog i dizajn baze, neophodna prava da bi se aplikacija koristila, ... Vremenom su me pritisle obaveze, sitna deca, u svakom slučaju prešao sam na zapisivanje, zapišem ovde, onde, pa kad mi zatreba, osvežim pamćenje pa kao nov. A kako vreme neumitno teče, stićiće i mene, ako već i nije, počeću da zaboravljam gde sam zapisao – valjda je to poslednji stadijum.

Na sreću, relacione (relaciono-objektne) baze podataka odlikuje jedno dobro svojstvo a to je da imaju meta podatke. Meta podaci su podaci o podacima, što u konkretnom slučaju znači nema potrebe da preterujete sa pamćenjima tipa: Miletu sam dao pravo da ažurira podatke, pregledava ali ne i da menja strukturu tabela, ili tipa: tabelu zaposleni kreirao sam sa tim i tim kolonama i sa tom i tom internom strukturom i tim i tim indeksima, ..., već me umorila sama pomisao. E tu sad stupaju meta podaci. Različite baze različitim metodama dolaze do tih podataka. Na primer, kod Oracle baze postoji niz tabela i/ili pogleda, poput ALL_OBJECTS, u kojima su upisani svi objekti baze (tabele, indeksi, procedure, funkcije, ...) i odgovarajućim select naredbama i poznavanjem dictionary-a se dolazi do željenih informacija. Kako je to rešeno kod MySQL, ne gubite nadu, sledi u nastavku, mada bih ja o meta podacima mogao nadugo i naširoko.

Mnoge korisne informacije o MySQL bazi, korisnicima i tabelama se mogu dobiti koristeći neku od SHOW komandi. U zavisnosti od prava (privilegija) koje su vam dodeljene, neke SHOW komande mogu da vam budu nedostupne. root korisnik ili onaj koji ima slične privilegije, svakako čovek od poverenja, može koristiti sve SHOW komande, koje će mu pružiti tražene informacije.

Najčešće korišćene SHOW naredbe uključuje sledeće:

SHOW GRANTS FOR user
SHOW DATABASES [LIKE something]
SHOW [OPEN] TABLES [FROM database_name] [LIKE something]
SHOW CREATE TABLE table_name
SHOW [FULL] COLUMNS FROM table_name [FROM database_name] [LIKE something]
SHOW INDEX FROM table_name [FROM database_name]
SHOW TABLE STATUS [FROM db_name] [LIKE something]
SHOW STATUS [LIKE something]
SHOW VARIABLES [LIKE something]
SHOW GRANTS komanda prikazuje privilegije navedeneg korisnika za navedeni host. Najkorisnija je za proveru statusa nekog korisnika, posebno kada postoji zahtev da se modifikuju postojeće korisnikove privilegije. Na kraju krajeva to je lak način da utvrdite da li korisnik stvarno nema zahtevane privilegije. Na primer da proverimo šta ima korisik mile izdali bi smo:

mysql> show grants for mile@localhost;

+-------------------------------------------------------------------------------+

| Grants for mile@localhost |

+-------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO 'mile'@'localhost'

IDENTIFIED BY PASSWORD '*EC24BE67633C4733D1A70ACB3585F0455F0889D8' |

| GRANT ALL PRIVILEGES ON `cdcol`.* TO 'mile'@'localhost' |

+-------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

Ako pak niste root korisnik ili “čovek od poverenja” a niste ni mile, dobićete poruku o grešci. Svi oni kojima se delimično veruje mogu videti samo relevantne informacije vezane samo za svog korisnika. Na primer, mile nije u mogućnosti da vidi informacije o root korisniku.

mysql> show grants for root@localhost;
ERROR 1044 (42000): Access denied for user 'mile'@'localhost' to database 'mysql'

Budite svesni svojih privilegija i ako niste “od poverenja” da ne kažem root korisnik, da na neke od pomenutih komandi nećete dobiti očekivane informacije već će pristup biti limitiran. Ako vam to smeta, pogledajte članak o xampp-u, i postanite kalif umesto kalifa bar na svojoj radnoj stanici.

Informacije o bazama i tabelama

Komada SHOW DATABASES će uraditi baš to, odnosno prikazaće informacije o bazama koje se nalaze na MySQL serveru:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cdcol              |
| mysql              |
| phpmyadmin         |
| test               |
| webauth            |
+--------------------+
6 rows in set (0.01 sec)

Nakon što odaberete bazu sa kojom ćete raditi (USE database) SHOW naredba se može koristiti za prikaz liste tabela u toj bazi. Ako dobijete drugačiji prikaz nije reč o grešci već o vašim kreativnim sposobnostima:

mysql> show tables;

+----------------------+

| Tables_in_phpmyadmin |

+----------------------+

| pma_bookmark |

| pma_column_info |

| pma_designer_coords |

| pma_history |

| pma_pdf_pages |

| pma_relation |

| pma_table_coords |

| pma_table_info |

+----------------------+

8 rows in set (0.03 sec)

Ako se doda još i OPEN u SHOW TABLES komandu, dobiće se lista svih tabela u kešu, uz informaciju koliko su puta keširane i da li se trenutno koriste:

mysql> show open tables;
+----------+--------------+--------+-------------+
| Database | Table        | In_use | Name_locked |
+----------+--------------+--------+-------------+
| mysql    | procs_priv   |      0 |           0 |
| mysql    | db           |      0 |           0 |
| mysql    | host         |      0 |           0 |
| mysql    | tables_priv  |      0 |           0 |
| mysql    | user         |      0 |           0 |
| mysql    | columns_priv |      0 |           0 |
+----------+--------------+--------+-------------+
6 rows in set (0.00 sec)

Ako SHOW OPEN TABLES prikazuje tabele koje su višestruko puta korišćene a trenutno se ne koriste (in_use=0) izdajte FLUSH TABLES komandu da oslobodite memoriju (pravilo kod svih baza podataka memorije nikad dosta).

Prikupljane informacija o strukturi tabele

Vrlo korisna komanda je SHOW CREATE TABLE, koja uradi ono što bi čovek i očekivao, prikaže SQL komandu koja se koristila pri kreiranju tabele:

mysql> show create table pma_table_info;
+----------------+----------------------------------------------------+
| Table          | Create Table                                        |
+----------------+----------------------------------------------------+
| pma_table_info | CREATE TABLE `pma_table_info` (
  `db_name` varchar(64) collate latin1_general_ci NOT NULL default '',
  `table_name` varchar(64) collate latin1_general_ci NOT NULL default '',
  `display_field` varchar(64) collate latin1_general_ci NOT NULL default '',
  PRIMARY KEY  (`db_name`,`table_name`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci COMMENT='Table
information for phpMyAdmin' |
+----------------+----------------------------------------------------+
1 row in set (0.08 sec)

Njena korisnost ogleda se u tome što može biti podsetnik (i to brz) ili brza referenca na naredbu kojom je kreirana neka tabela (u slučaju da vam papirić nije pri ruci). Iste informacije dobijaju se ako bi ste dump-ovali šemu (ali na sporiji i nepregledniji način).

Ako vam je potrebna samo struktura tabele, ne i SQL komanda za kreiranje, komanda je SHOW COLUMNS:

mysql> show columns from pma_table_info;
+---------------+-------------+------+-----+---------+-------+
| Field         | Type        | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| db_name       | varchar(64) | NO   | PRI |         |       |
| table_name    | varchar(64) | NO   | PRI |         |       |
| display_field | varchar(64) | NO   |     |         |       |
+---------------+-------------+------+-----+---------+-------+
3 rows in set (0.03 sec)

SHOW COLUMNS je isto što i DESCRIBE komanda.

SHOW INDEX komanda prikazuje informacije o indeksima odredjene tabele. Sintaksa je:

SHOW INDEX FROM ime-tabele [FROM ime-baze]

Ova komanda pruža dosta informacija, počev od imena kolone do kardinalnosti indeksa. Kolone koje se vraćaju komandom opisane su u tabeli koja sledi:

Ime kolone

Opis

Table

Ime tabele

Non_unique

1 ili 0.

1 - indeks može sadržati duplikate

0 – indeks je jedinstven

Key_name

Ime indeksa

Seq_in_index

Redosled kolone u indeksu. Počinje od 1.

Column_name

Ime kolone koja je deo indeksa

Collation

Redosled sortiranja za tu kolonu:

A – rastući (ascending)

Null – ne sortirana

Cardinallity

Broj jedinstvenih vrednosti u indeksu

Sub_part

Na parcijalno indeksiranim kolonama, prikazuje broj znakova koji je indeksiran. NULL ako je cela kolona indeksirana.

Packed

Veličina numeričkih kolona

Comment

Komentar

Sledeća komanda koja vraća tabelu prepunu informacijama je SHOW TABLE STATUS. Sintaksa je:

SHOW TABLE STATUS [FROM database_name] LIKE ‘nešto’

Kolone koje se vraćaju komandom opisane su u tabeli:

Ime kolone

Opis

Name

Ime tabele

Type

Tip tabele: MyISAM, BDB, InnoDB ili Gemini.

Row_format

Format smeštanja zapisa: fixed, dynamic ili compressed.

Rows

Broj redova

Avg_row_length

Prosečna dužina zapisa

Data_length

Veličina fajla sa podacima

Max_data_length

Maksimalna veličina fajla sa podacima

Index_length

Veličina indeksnog fajla

Data_free

Broj bajtova koji su alocirani a nisu iskorišćeni

Auto_increment

Sledeća vrednost koja će biti iskorišćena u auto_increment polju

Create_time

Datum i vreme kreiranja tabele (datetime format)

Update_time

Datum i vreme poslednjeg ažuriranja

Check_time

Datum i vreme kad je tabela poslednji put “proverena”

Create_options

Sve ekstra informacije koje su bile korišćene kod CREATE TABLE naredbe

Comment

Bilo koji komentar dodan kada je tabela kreirana. Pored toga, InnoDB tabele će iskoristiti ovu kolonu da daju informaciju o praznom prostoru u tablespace-u.

Sistemski statusi

SHOW STATUS i SHOW VARIABLES komande pružaju informacije o serveru baze. Sintaksa je baš kao i prethodno napisana, ništa uzbudljivo.

Ono što se desi nakon izdavanja komandi je mnoštvo informacija (i od popa uši). Sreća je da ćemo izdvojiti samo neke

Aborted_connects

Broj neuspelih pokušaja da se pristupi MySQL serveru. Svaki put kad je taj broj različit od nule treba istražiti slučaj. Moguće je da je loša kombinacija username, password u skriptu ili je broj simultanih konekcija postavljen na premalu vrednost.

Connections

Ukupni broj konekcija na MySQL server od trenutka startovanja istog.

Max_used_connections

Maksimalni broj konekcija koje su bile simultane od trenuta startovanja servera.

Slow_queries

Broj upita koji su trajali duže long_query_time (default je 10 sekundi). Ako je broj veći od 1 vreme je da se zabrinete i proverite SQL-ove, razmislite o performansama hardvera ili zovete vatrogasce.

uptime

U sekundama izraženo koliko server radi.

Detaljnu listu sa iscrpnim opisima statusa možete naći na: http://dev.mysql.com/doc/refman/5.0/en/show-status.html.

SHOW VARIABLES takodje obiluje, reklo bi se, brdo informacija. Shodno tome izdvojićemo samo neke a o ostalima možete saznati na: http://dev.mysql.com/doc/refman/5.0/en/show-variables.html.

connect_timeout

Prikazuje u sekundama koliko će MySQL server čekati na konekciju dok je ne odbije

have_innodb

Prikazuje YES ako su InnoDB tabele podržane

have_bdb

YES ako su Berkeley DB tabele podržane

max_connections

Dozvoljeni broj simultanih konekcija na MySQL, preko tog broja se konekcije odbijaju

port

Port na koji MySQL osluškuje kada je startovan

table_type

Podrazumevani tip tabela, obično MyISAM

version

MySQL broj verzije


Ukoliko neki od ovih parametara nije odgovarajući on se može promeniti u konfiguracionom fajlu ili startup komandom (o čemu ću nekom drugom prilikom ako ne zaboravim već o čemu sam hteo).

среда, 13. фебруар 2008.

Neprijatelj nikad ne miruje – MySQL privilegije

Iako naslov u najmanju ruku zvuči kao uvodni čas predmeta koji se u davna vremena zvao „ONO“ a kasinije je dodat „i DSZ“, unutrašnji i spoljni neprijatelji nikada ne miruju. Zna to MySQL pa otuda i stalno budan podsistem koji se bine o pravima (privilegijama). Od trenutka kad pokušate da se konektujete, a onda i za svaku dalju akciju, MySQL proverava sledeće:

  • Odakle vršite pristup (host – računar sa kog radite)
  • Za šta se predstavljate (ime korisnika i lozinku)
  • Šta vam je dozvoljeno da uradite (komandna prava)

Sve ove informacije smeštene su u bazu sa imenom mysql, koja se automatski kreira kada instalirate MySQL. Ceo podsistem podržan je sa nekoliko tabela u mysql bazi:

  • columns_priv — Definiše prava korisnika nad poljima u tabeli.
  • db — Sadrži definiciju prava za sve baze na serveru.
  • func — Sadrži funkcije koje su korisnici kreirali.
  • host — Sadrži hostove sa kojih je dozvoljeno konektovanje na odredjenu bazu.
  • tables_priv — Sadrži definicije korisničkih prava nad tabelama u bazi.
  • user — Sadrži komandna prava za korisnike.

Struktura tabela može se pogledati MySQL konsolom koristeći komandu DESCRIBE ime-tabele pošto pristupite mysql bazi. Na primer, iz komand prompa otukcate:

mysql –u root –p mysql

Nakon što unesete lozinku (ukoliko ste je postavili) sistem daje prompt: mysql>. Otkucate na primer:

mysql> DESCRIBE user;

Autentifikacioni proces u dva koraka

Kao što smo napomenuli, MySQL proverava host, ime korisnika i lozinku i prava nad komandom u toku autentifikacionog procesa. Ta provera sprovodi se u dva koraka:
  1. MySQL proverava host sa koga se vrši konekcija i ime i lozinku koju koristimo. Ako je sa hosta dozvoljena konekcija i lozinka je odgovarajuća za ime korisnika, i ime odgovara onom dodeljenom hostu, MySQL prelazi na drugi korak.
  2. U zavisnosti koju SQL komandu pokušavamo da izvršimo, MySQL verifikuje da za to imamo dozvolu za tu bazu, tabelu i polje.

Ukoliko korak 1 ne prodje, prikazuje se greška i nema mogućnosti prelaska na korak dva. Na primer, pretpostavimo da se konektujemo na MySQL bazu sa imenom mile i lozinkom qwe123 i da želimo da pristupimo bazi koja se zove mojDB. Dobićemo poruku o grešci ako je bilo koja od konekcionih promenljivih neispravna iz sledećih razloga:

  • Lozinka nije tačna
  • Korisnik mile ne postoji.
  • Korisnik mile se ne može konektovati sa localhost (ako je komandu izdao sa istog).
  • Korisik mile se može konektovati sa localhost ali ne može koristiti mojDB bazu.

Moguće je videti grešku kao što je:

#> /usr/local/bin/mysql/bin/mysql -h localhost -u mile –pqwe123 mojDB
Error 1045: Access denied for user: 'mile@localhost' (Using password: YES)

Ako je korisniku mile sa lozinkom qwe123 dozvoljen da se konektuje sa localhost-a na mojDB bazu, MySQL će proveriti akcije koje mile može izvršiti u koraku 2 procesa. Zarad naše svrhe, pretpostavimo da je mile čovek od delimičnog poverenja i da može selektovati podatke iz tabele imenik ali da mu nije dozvoljeno da ih u nju insertuje. Na osnovu sekvenca komandi grešake će izgledati:

D:\xampp\mysql\bin>mysql.exe -h localhost -u mile -pqwe123 mojDB

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 83

Server version: 5.0.51 Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> select * from imenik;

+----+------+

| id | ime |

+----+------+

| 1 | Mile |

| 2 | Pera |

+----+------+

2 rows in set (0.01 sec)

mysql> insert into imenik (ime) value ('Joca');

ERROR 1142 (42000): INSERT command denied to user 'mile'@'localhost' for table '

imenik'

mysql>

Prava na neku akciju su česta u aplikacijama sa nekoliko nivoa administracije. Na primer, ako se kreira aplikacija koja sadrži finansijske podatke, može se dodeliti samo SELECT pravo običnim zaposlenima, a INSERT i DELETE pravo rukovodećoj strukturi.

Rad sa privilegijama (pravima) korisnika

U većini slučajeva kada se pristupa MySQL-u kod Internet provajdera dobija se jedan korisnik i na raspolaganju je jedna baza. Po defaultu, taj će korisnik imati pravo pristupa svim tabelama u bazi i biće mu dozvoljeno da izvršava sve komande.

U tom slučaju, odgovornost je na programeru da realizuje zaštitu u aplikaciji programski.

Ako ste pak administrator sopstvenog servera ili imate mogućnost da dodate koliko želite baza i korisnika, kao i da modifikujete prava pristupa svojim korisnicima, evo kako izgleda taj proces.

Dodavanje korisnika

Administracija koristeći dodatne alate (npr: phpMyAdmin) može obezbediti jednostavan metod za dodavanje korisnika, koristeći wizarde ili grafički interfejs. Medjutim, dodavanje korisnika kroz MySQL monitor nije teško, posebno kada se shvata provera sigurnosti koja se koristi kod MySQL-a a koju smo upravo prošli (ako ste preskakali nazad na početak).

Najednostavniji metod za dodavanje korisnika je GRANT komanda. Konektovanjem na MySQL kao root korisnik, jednom komandom možete postaviti novog korisnika. Drugi metod je izdati INSERT naredbe u sve relevantne tabele u mysql bazi, što zahteva da se znaju sva polja u tabelama koja se koriste za smeštanje prava. Ovaj metod radi ali je značajno komplikovaniji od izdavanje jednostavne GRANT komande. Složeniji metod opisan je na http://dev.mysql.com/doc/refman/5.0/en/adding-users.html adresi.

Najednostavnija sintaksa GRANT komande je

GRANT privileges
ON databasename.tablename
TO username@host
IDENTIFIED BY "password";

Privilegije koje se mogu dodeliti su

  • ALL— Daje korisniku sva moguća prava (privilegije)
  • ALTER— Korisnik može menjati tabele, kolone i indekse
  • CREATE— Korisnik može kreirati baze i tabele
  • DELETE— Korisnik može brisati zapise iz tabela
  • DROP— Korisnik može brisati (dropovati) tabele i baze
  • FILE— Korisnik može čitati i pisati fajlove, koristi se kod importa ili dampa podataka
  • INDEX— Korisnik može dodavati indekse ili ih brisati
  • INSERT— Korisnik može dodavati zapise u tabele
  • PROCESS— Korisnik može videti i stopirati sistemske procese, samo korisnici kojima se veruje treba da imaju tu mogućnost
  • REFERENCES— Trenutno se ne koristi od MySQL, ali kolona za REFERENCES privilegije postoji u user tabeli
  • RELOAD— Korisnik može izdati FLUSH naredbe; samo od poverenja korisnici
  • SELECT— Korisnici mogu selektovati zapise iz tabela
  • SHUTDOWN— Korisnik može oboriti (shut down) MySQL servera; samo za poverljive
  • UPDATE— Korisnik može ažurirati zapise u tabelama
  • USAGE— Korisnik se može konektovati na MySQL ali nema drugih privilegija

Ako se, na primer, želi kreirati korisnik koji se zove misko sa lozinkom asd321, sa SELECT i INSERT privilegijama na svim tabelama u bazi mojDB, i želite da korisik može pristupiti sa bilo kog hosta, koristi se

GRANT SELECT, INSERT
ON mojDB.*
TO misko@"%"
IDENTIFIED BY "asd321";

Primetimo da se koriste dva wildcard-a (Simbol koji menja jedan ili više ne navedenih karaktera, najčešće se koriste pri pretraživanju teksta ili pri izdvajanju jednog ili više fajlova i/ili foldefa.): * i %. Ovi wildcard-ovi se koriste da zamene vrednosti. U primeru: * menja listu tabela i % menja listu hostova koji postoje u svetu—što je prilično velika lista.

Drugi primer je dodavanje korisnika koristeći GRANT komandu, tako da se novi korisnik zove pera sa lozinkom qay212, sa ALL privilegijama na tabeli zaposleni u bazi mojHR. Ovaj se korisnik može konektovati samo sa specificiranog hosta:

GRANT ALL
ON mojHR.zaposleni
TO pera@b2b.rs
IDENTIFIED BY "qay212";

Ako se zna da b2b.rs ima IP adresu 195.104.41.10, moguće je zameniti adresu u hostname delu komandom:

GRANT ALL
ON mojHR.zaposleni
TO pera@'195.104.41.10'
IDENTIFIED BY "qay212";

Sva imena i ip adrese su izmisljena i nadam se moderna pa je HR od human resource (vrlo popularno ovih dana, mobing i još ponešto iz te oblasti pominjaću vremenom).

Jedna napomena kod dodavanja korisnika: Uvek koristite lozinku i trudite se da ona bude dobra (šta god da znači, a to sam već pominjao)! MySQL omogućava da se kreira korisnik bez lozinke, time se vrata ostavljaju širom otvorena za nekoga sa lošim namerama – a kao sto znamo: Neprijetalj nikad ne miruje.

Ako se izda GRANT komanda za dodavanje korisnika, promene će se odmah primeniti. Neverne Tome mogu izdati FLUSH PRIVILEGES komandu u MySQL monitoru, što dovodi do sigurnog ponovnog učitavanja tabela sa privilegijama.

Skidanje privilegija

Skidanje privilegija je jednostavno kao i dodavanje; umesto GRANT komande, koristi se REVOKE. Sintaksa REVOKE komande je

REVOKE privileges
ON databasename.tablename
FROM username@hostname;

Na isti način kako se može dati pravo izdavanjem INSERT komande ono se može opozvati izdavanjem DELETE komande da bi se izbrisali zapisi iz tabela u mysql bazi. Kao i kod dodavanja potrebne su iste veštine vezane za polja i tabele u mzsql bazi. Budimo iskreni, mnogo je jednostavnije i sigurnije koristiti REVOKE.

Da bi se uskratila mogućnost korisniku mile da INSERT-uje zapise u mojHR bazu, izdaje se sledeća REVOKE naredba:

REVOKE INSERT
ON mojHR.*
FROM mile@"%";
Promene koje se načine nad podacima u tabelama za prava reflektuju se odmah, te da ako niste sigurni u tu tvrdnju FLUSH PRIVILEGES komandu u MySQL monitoru ne može da šteti a kad nešto ne šteti onda sigurno koristi.

недеља, 10. фебруар 2008.

XAMPP i produkcija

XAMPP je pre svega namenjen razvoju i kao takav je prilično otvoren. Takva otvorenost, koliko je dobra pri razvoju, može biti veoma opasna ako se krene online. Neophodno je otkloniti „rupe“ i time koliko toliko ublaže posledice eventualnog prepada. Obzirom da je sigurnost „večna borba svetlosti i tame“ nikada nije moguće biti u potpunosti siguran i neophodno je implementirati proces zaštite (šta god da to znači).

Koje su to inicijalne sigurnosne rupe:
  • MySQL Administrator – root je bez lozinke
  • MySQL serveru se može pristupiti sa mreže
  • PhpMyAdmin je dostupan sa mreže
  • Primeri koji su instalirani su dostupni sa mreže
  • Unapred definisani i poznati su korisnici Mercury-a i FileZilla-e
Obzirom na sve neophodno je zaštititi se pre nego krenete online. Zaštita ruterima i firewall-ovima nije dovoljna jer je reč o zaštiti niskog nivoa (šta god da to znači – nije dovoljna!). Neophodno je startovati „XAMPP Security Console“ i dodeliti lozinke.

Shodno tome neophodno je pristupiti http://localhost/security:

Da bi rešili uočene probleme vezane za mysql, phpmyadmin i xampp folder koristimo link:

http://localhost/security/xamppsecurity.php<= [pristup dozvoljen samo sa localhost-a] Rešimo problem MySQL lozinke root korisnika:
Nakon uspešne izmene treba stopirati i startovati MySQL bazu da bi promena koja je načinjena imala efekta. Naravno od kvaliteta lozinke zavisi koliko smo zaštitili bazu.

Sada treba zaštititi i direktorijum u kome se nalazi xampp, odnosno kreirati apache .htaccess.
Pošto kliknete na dugme „Make safe the XAMPP directory“ dobićete informaciju o uspešnoj izmeni lozinki i mestu gde su sačuvani podaci.

Ako se ponovo vratimo na Security sekciju nakon izmena stanje je:
Ostaje zaštita Mercury-a i FileZilla FTP servera, za sad najbolja je zaštita ne startovati te servere što je takodje sigurno jer XAMPP Security Console ne nudi pomoć. Uopšteno uvek se treba držati principa da startujete samo servere koji su vam neophodni.

Što se php safe moda tiče treba napomenuti da je isti obrisan u php 6.0.0 i da php u safe modu starutuju internet provajderi zbog neusaglašenosti web servera i operativnog sistema, u svakom slučaju treba ispratiti ponudjeni link.

субота, 9. фебруар 2008.

Instalacija XAMPP-a za Windows

U zavisnosti od toga koja se distribucija skine postoje dva metoda za instalaciju:

  • Instalacija koristeći instalacioni program
  • Instalacija bez korišćenja instalacionog programa

Instalacija koristeći instalacioni program

Da bi ste instalirali XAMPP koristeći ovaj metod neophodno je download-ovati xampp-win32-VERSION—installer.exe, gde je VERSION oznaka verzije (u našem slučaju 1.6.5). Nakon uspešnog download-a pokrenete program. Proces je u potpunosti pravolinijski: odaberete jezik, odredite lokaciju, odlučite se za način startovanja servera (pozivom komande ili ga
startujete kao servis).

  1. Izbor jezika. Obzirom da srpski nije podržan, engleski se čini kao dobar izbor, bar u mom slučaju.

  2. Nakon izbora jezika pojavljuje se početna strana “čarobnjaka”. Klik na dugme Next (obavezno bez čitanja) je pravi izbor.

  3. Sledi izbor lokacije na kojoj će se instalirati XAMPP. Root direkotorijum diska je pravi izbor
  4. Ni ovde preterana pažnja nije neophodna jer kasnije možete promeniti opcije vezane za način startovanja. Ako nemate predrasude vezane za startovanje nekog programa kao servisa ili ne želite da kasnije, pri korišćenju, razmišljate da li je startovan ili ne odaberite instalaciju servisa, u suprotnom Next je dovoljno.

  5. Računar će u zavisnosti od procesorske brzine raspakovati arhivu i smestiti je na pravo mesto.
  6. Time ste uspešno završili instalaciju. Ostaje vam da stisnete palčeve i proverite da li je sve u redu, odnosno da li XAMPP radi! Nakon što kliknete na dugme Finish, instalacioni program će vam ponuditi da startujete xampp-controll.exe. Iskoristite priliku.

Instalacija bez instalacionog programa

Ako niste ljubitelj kliktanja na Next ovaj metod će vam u potpunosti odgovarati. Bez obzira da li download-ujete verziju 7zip ili zip (koja je značajno veća) arhivu raspakujete te je direktorijum po izboru. Najbolji izbor je u root direktorijum, mada više nije neophodno.

U ovom slučaju raspakovali smo arhivu u c:\xampp. Otvorimo XAMPP folder i pokrenemo setup_xampp.bat


sve putanje u konfiguraciji će biti ažurirane u slučaju da ima potrebe.

Ono što preostaje je da se pokrenu željeni serveri koristeći .bat fajlove ili aplikaciju xampp-control.exe.

Ako arhivu raspakujemo u root direktorijum kao što je c:\xampp ili d:\xampp, XAMPP se može startovati direktno. To znači da nije potrebno startovati setup_xampp.bat. Apache, MySQL, i Mercury Mail Server biće korektno startovani. FileZilla FTP server neće biti startovan jer zahteva apsolutnu putanju.

Napomena: U slučaju da se xampp pojavljuje dvaput, odnosno da ste raspakovali tako da imate strukturu \xampp\xampp morate startovati setup_xampp.bat.

XAMPP - Lako do Apache web servera, MySQL baze i PHP-a

Mnogi koji su probali da instaliraju Apache web server, iz sopstvenog iskustva, znaju da to nije jednostavno a stvari se dodatno komplikuju kada se žele dodati MySQL, PHP i Perl.

XAMPP je distribucija Apache servera koja sadrži MySQL, PHP i Perl koja je vrlo jednostavna za instalaciju. XAMPP je uistinu vrlo jednostavna instalacija za korišćenje – download-uje se, raspakuje u startuje.

Trenutno postoje četiri XAMPP distribucije:

  • XAMPP za Linux
  • XAMPP za Windows
  • XAMPP za Mac OS X
  • XAMPP za Solaris

XAMPP za Windows

Distribucija za Windows 98, NT, 2000, 2003, XP i Vistu. Ova verzija sadrži: Apache, MySQL, PHP + PEAR, Perl, mod_php, mod_perl, mod_ssl, OpenSSL, phpMyAdmin, Webalizer, Mercury Mail Transport System for Win32 i NetWare Systems v3.32, Ming, JpGraph, FileZilla FTP Server, mcrypt, eAccelerator, SQLite, i WEB-DAV + mod_auth_mysql.

Zadnji release XAMPP-a, u trenutku pisanja, je 1.6.5 koji sadrži:

  • Apache HTTPD 2.2.6 + Openssl 0.9.8g
  • MySQL 5.0.51
  • PHP 5.2.5
  • PHP 4.4.7
  • phpMyAdmin 2.11.3
  • FileZilla FTP Server 0.9.24
  • Mercury Mail Transport System 4.52
Koristan link:
http://www.apachefriends.org/en/index.html