230 likes | 425 Views
DWA 2. Lesson 03. MySQL– osnove administracije. MySQL klijent i PhpMyAdmin Izrada baze podataka Rad sa korisnicima Izrada tablica Izrada indeksa Backup i Restore baze ili tablica. 1. MySQL klijent. MySQL klijentu pristupamo nakon spajanja putem SSH
E N D
DWA 2 Lesson 03
MySQL– osnove administracije • MySQL klijent i PhpMyAdmin • Izrada baze podataka • Rad sa korisnicima • Izrada tablica • Izrada indeksa • Backup i Restore baze ili tablica
1. MySQL klijent • MySQL klijentu pristupamo nakon spajanja putem SSH • Moramo imati korisničko ime i zaporku • Obično je dozvoljeno spajanje samo na jednu (vašu) bazu podataka • U shell-u pišemo: $ mysql –u ijugo –p <enter> Enter password: unijeti pass i <enter> mysql> ... ako vidimo ovakav prompt prijava uspješna
1. MySQL klijent • u MySQL klijentu možemo koristiti ugrađene naredbe MySQL servera za preglede i opise sadržaja, te SQL naredbe za kreiranje i manipulaciju podacima • Spor proces, svaka greška znači ponovni upit svih naredbi • Ponekad jedini mogući pristup bazi • Najbolji i najbrži način izrade i vraćanja sigurnosnih kopija
Vježba • Logirajte se na senior • Prijavite se na mysql • Mysql –u studenti –p <enter> dwa2 <enter> • show databases; • use pzi2; • show tables; • describe books; • select * from books;
1. PhpMyAdmin • Potrebna prijava – isti podaci kao za MySQL klijent • Open source web aplikacija pisana u PHP • Grafičko sučelje za MySQL • Omogućava puno brži rad • Nije pogodna za manipulaciju velikih količina podataka (timeout PHP skripte!)
Vježba • http://senior/zap/ • prijavite se korištenjem svog korisničkog imena • odaberite bazu podataka • pregledajte tablice • struktura, podaci, operacije,....
2. Izrada baze podataka • CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... create_specification: [DEFAULT] CHARACTER SET [=] charset_name | [DEFAULT] COLLATE [=] collation_name • Ukratko: CREATE DATABASE ime_baze; • Pregled: SHOW DATABASES; • Brisanje: DROP DATABASE ime_baze;
Vježba • napravite svoju bazu podataka dwa2_korisnickoIme koristeći se phpMyAdmin-om • izbrišite tu bazu podataka koristeći se mysql klijentom • ponovite obrnutim redoslijedom
3. Rad sa korisnicima • MySQL ima kompleksan sustav za definiranje privilegija svakog korisnika • Moguće je definirati pristup od razine baze, tablica u bazi, pa čak i stupaca (atributa) tablice • Osnovni princip administracije korisnika (ne samo kod baza, već kod svake administracije poslužitelja) je: • PRINCIPLE OF LEAST PRIVILEGE • Korisniku dajemo najmanji mogući skup privilegija koji zadovoljava njegove potrebe
3. Rad sa korisnicima • Stvaranje korisnika i davanje privilegija: • GRANT select,insert,update,delete ON ime_baze.* TO username IDENTIFIED BY ‘password’; • Obavezno osvježiti popis privilegija • FLUSH PRIVILEGES; • Dokumentacija: • http://dev.mysql.com/doc/refman/5.1/en/grant.html • Oduzimanje prava korisniku: • REVOKE delete ON ijugo.* FROM ijugo; • FLUSH PRIVILEGES;
Vježba • Napravite korisnika (vaše korisnicko ime) koji ima pravo čitanja na vašoj bazi • Osvježite tablice privilegija • Probajte se spojiti kao taj korisnik • Dodajte sva prava na vašoj bazi tom korisniku • Osvježite tablice privilegija
4. Izrada tablica • Dokumentacija: • http://dev.mysql.com/doc/refman/5.1/en/create-table.html • Primjer create table customers ( customerid int unsigned not null auto_increment primary key, name char(50) not null, address char(100) not null, city char(30) not null) ; • Brisanje tablice: • DROP TABLE customers;
Vježba • Logirajte se kao admin (studenti, dwa2) • Koristite svoju bazu! (use moja_baza;) • Napravite tablicu: create table customers ( customerid int unsigned not null auto_increment primary key, name char(50) not null, address char(100) not null, city char(30) not null) ; • Unesite 1 redak u tu tablicu • INSERT INTO customers(name,address,city) VALUES (‘Igor’,’Omladinska 14’,’Rijeka’); • Izbrišite tablicu (DROP ime_tablice;)
5. Izrada indeksa • Pravilno indeksiranje osigurava vrlo brzo izvođenja upita i nad velikim skupom podataka • Osnovni indeks svake relacije je njezin primarni ključ – trebala bi ga imati svaka relacija • Moguće je definirati više indeksa nad svakom relacijom (ne više od 3) • Treba ih prilagoditi potrebama web aplikacije
5. Izrada indeksa • http://dev.mysql.com/doc/refman/5.0/en/create-index.html • CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON tbl_name (index_col_name,...) [index_type] index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH | RTREE} • Npr. • CREATE INDEX idx_login ON users(email,pass)
5. Izrada indeksa • Primjer: • Tablica USERS- primarni ključ je user_id • Naša aplikacija u velikoj većini slučajeva koristi ovu relaciju za prijavu i to usporedbom polja email i pass • Napravimo indeks za to: • CREATE INDEX idx_login ON users(email, pass) • DROP INDEX idx_login
5. Izrada indeksa • Nedostatak: • Usporava unos i izmjenu podataka (jer svaki unos ili izmjena znači i izmjenu svih indeksa) • U praksi – nikad više od 2-3 indeksa po relaciji • Ako ih treba više – razmisliti o promjeni relacijske sheme
Vježba • dodati potrebne indekse na neke tablice za vježbu • isprobati utjecaj indeksa na primjeru • ukloniti indeks
6. Backup i restore baze ili tablica • Najvažnije operacije za svakog DBA • Za veću količinu (> 20 MB) se izvode putem MySQL naredbi - inače Export opcija PhpMyAdmin-a • Backup: • mysqldump -u [username] -p [password] [databasename] > [backupfile.sql] • Datoteka će nastati u vašem home direktoriju
6. Backup i restore baze ili tablica • Backup samo nekih tablica: • mysqldump -u [username] -p [password] [databasename][table1,table2,...] > backupfile.sql • Vrlo brz postupak – cca 4,0 mil. zapisa u 1 minuti
6. Backup i restore baze ili tablica • Restore baze • mysql -u [username] -p [password] [database_to_restore] < [backupfile] • Ako je backup komprimiran • gunzip < custback.sql.sql.gz | mysql -u [username] -p [password] [database_to_restore]
Vježba • BACKUP • mysqldump -u studenti –pijugo > [ijugo.sql] • BRIŠEMO SADRŽAJ BAZE (NE I BAZU!) • mysql –u studenti –p • use ijugo • DROP TABLE customers; • exit • RESTORE • mysql -u ijugo –pijugo < ijugo.sql