NAVIGACIJA

Naslovna strana - Jelena Grmusa

0

1

2

3

4

5

6

7

Uvod u Web i Internet tehnologije

POKRETANJE MySQL monitora pod Linux/UNIXom na studentskom serveru ALAS

 

POCETAK RADA OSTVARUJE SE naredbom mysql koja pokreće MySQL monitor. To je klijent koji Vas s komandne linije povezuje sa MySQL serverom.

shell> mysql -h host -u user -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 25338 to server version: 5.0.67-log

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

mysql>

The prompt tells you that mysql is ready for you to enter commands.


NA PRIMER:

mi08444@alas:~$ mysql -h alas -u mi08444 -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 25429 to server version: 5.0.67-log

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

mysql>

 

Opcijom -h zadajete ime racunara s kojim zelite da se povezete. To je racunar na kom se izvrsava MySQL server. Ako tu naredbu izvrsavate na istom racunaru na kom se nalazi i MySQL server, opciju -h i parametar host mozete izostaviti.

   Ako se od kuce povezujete na udaljenu masinu i koristite bilo SSH ili neki web administrativni interfejs (phpMyAdmin), za pristup navedite za ime hosta alas.matf.bg.ac.rs

Opcijom -u zadajete korisnicko ime pod kojim cete se povezati.
Ako ste MySQL instalirali na svom racunaru ili serveru, moracete da se prijavite kao korisnik root i da kreirate bazu podataka. Pod pretpostavkom da imate standardnu instalaciju, jedini vec definisani korisnik je root. Ako je MySQL instaliran na racunaru na kom ne posedujete administratorski pristup, upotrebite korisnicko ime koje Vam je dodeljeno.

Opcija -p obavestava server da zelite da unesete lozinku. Ova opcija se moze izostaviti ako ne postoji lozinka za korisnicko ime pod kojim se prijavljujete.

   Sta se desava od trenutka kada pokusate da se povezete?

Najpre MySQL proverava:

  1. odakle pristupate (host)
  2. Vas user name i password
  3. Vase dopustene privilegije, tj. kakve dozvole posedujete

Za ma koju komandu koju pokusate da izvrsite, proverava se da li imate pravo na npr. SELECT, DROP, GRANT, ... za odredjenu bazu, tabelu i slog.

    UOBICAJENE GRESKE I PORUKE O GRESKAMA

I

mi05007@localhost:~$ mysql -h alas -u mi05007 -p123 test    //u ovoj komandi navedena je i lozinka 123 i zahtevana baza test koja je deafult baza

Error: Access denied for user 'mi05007@alas'  (Using password: YES)

UZROCI:

  1. Nekorektna lozinka
  2. Ne postoji user mi05007
  3. Korisnik mi05007 ne moze da se poveze na alas sa druge masine (probajte alas.matf.bg.ac.rs)
  4. Korisnik moze da se poveze na alas, ali ne moze da koristi bazu podataka test
  5. Nekorektno otkucana naredba
  6. Ako je MySQL instalitan na Vašem računaru, proverite da li ste pokrenuli datoteku mysql_install_db, jer je to ponekad neophodno

 

II

mysql>INSERT into mi05008_KP values ('k2', 'i2', 3);

Error: Access denied for user 'mi05007@alas'  (Using password: YES)

UZROCI:

  1. Nekorektan naziv baze
  2. Ne postoji pristup tabeli mi05008_KP (vec mozda tabeli KP za bazu mi05007 korisnika mi05007)
  3. Korisnik mi05007 nema INSERT privilegiju za izvrsenje unosa novih redova u tabelu baze podataka

 

PRIKAZ RASPOLOZIVIH BAZA

mysql> show databases;
+----------+
| Database |
+----------+
| information_schema |
| mi05007 |
+----------+
2 rows in set (0.00 sec)
 

Dakle, za Vas su raspolozive dve baze:  podrazumevana i username baza (baza ciji naziv se poklapa sa Vasim username)

 

 

KREIRANJE TABELA  - postoje dva nacina

KREIRANJE TABELE u MySQL monitoru

 

1.  U promptu predjite na upotrebu baze mi05007 (za korisnika ciji username je mi05007)

 

USE mi05007;

nakon poruke Database changed spremni ste za komande kreiranja tabela

Baza podataka se moze odabrati i prilikom prijavljivanja na sledeci nacin:

mysql -D baza -h host -u username -p

Ako ne izaberete bazu podataka, kada probate da obradjujete podatke iz baze dobicete poruku o gresci, poput sledece:
ERROR 1046: No Database selected

 

SQL naredbom CREATE TABLE kreiraju se tabele baze podataka. Njen opsti oblik je
CREATE TABLE ime_tabele(kolone)

U shemi koju cemo kreirati svaka tabela sadrzi prethodno osmisljene kolone, a iza imena svake kolone naveden je tip podataka. U nekim kolonama navedene su i neke druge karakteristike.
NOT NULL oznacava da taj atribut mora imati vrednost u svim redovima u tabeli. Ako ta opcija nije navedena, polje moze ostati prazno (NULL).
Rezervisana rec PRIMARY KEY iza naziva kolone govori da je ta kolona primarni kljuc tabele. Vrednosti u toj koloni moraju biti jedinstvene.

2.  NE ZABORAVITE:

OTKUCAJTE

mysql>

CREATE TABLE K

       (K_SIF CHAR(5) NOT NULL, NASLOV CHAR(50) NOT NULL,  OBLAST CHAR(20),  PRIMARY KEY (K_SIF));

 

AKO JE SVE U REDU PISACE

     Query OK, 0 rows affected

OTKUCAJTE

mysql>

 

CREATE TABLE I

     (I_SIF CHAR(6) NOT NULL, NAZIV CHAR(20) NOT NULL,STATUS SMALLINT, DRZAVA CHAR(20) NOT NULL,

            PRIMARY KEY (I_SIF));

AKO JE SVE U REDU PISACE

     Query OK, 0 rows affected

 

OTKUCAJTE

mysql>

 

CREATE TABLE KI 

         (K_SIF CHAR(5) NOT NULL, I_SIF CHAR(6) NOT NULL, IZDANJE SMALLINT NOT NULL, GODINA SMALLINT,

             TIRAZ INTEGER, PRIMARY KEY (K_SIF, I_SIF, IZDANJE), FOREIGN KEY (K_SIF) REFERENCES K ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (I_SIF) REFERENCES I ON DELETE CASCADE);

CREATE TABLE P

        (P_SIF CHAR(5) NOT NULL, IME CHAR(50) NOT NULL, BRNASLOVA SMALLINT, DRZAVA CHAR(20) NOT NULL   , PRIMARY KEY (P_SIF));

CREATE TABLE KP  (K_SIF CHAR(5) NOT NULL, P_SIF CHAR(5) NOT NULL, R_BROJ SMALLINT NOT NULL,

                       PRIMARY KEY (K_SIF, P_SIF),  FOREIGN KEY (K_SIF) REFERENCES K ON DELETE RESTRICT ON UPDATE  RESTRICT, FOREIGN KEY (P_SIF) REFERENCES P ON DELETE CASCADE);

AKO JE SVE U REDU PISACE

     Query OK, 0 rows affected

  3. PROVERITE  KOJE SU TABELE PRISUTNE TAKO STO CETE OTKUCATI

   mysql > show tables;

Videcete spisak svih tabela u tekucoj bazi podataka

Detaljnije informacije o nekoj tabeli dobicete upotrebom naredbe DESCRIBE. Videcete sve one informacije koje ste upisali prilikom kreiranja baze podataka. Ova naredba je korisna ako ste zaboravili tip kolone ili ako analizirate bazu podataka koju je kreirao neki drugi autor.

OTKUCAJTE

   mysql > describe K;
da biste videli informacije o tabeli K

 

II  nacin

Preusmeravanje sadrzaja datoteke moze biti veoma korisno u slucaju da zelite da kreirate ili popunjavate tabele baze podataka, jer odgovarajuce SQL naredbe pre izvrsenja mozete otkucati u ma kom tekst editoru.

 

1.  KREIRAJTE  datoteku tabele.sql SA SADRZAJEM

USE mi05007;

 

CREATE TABLE K

       (K_SIF CHAR(5) NOT NULL, NASLOV CHAR(50) NOT NULL,  OBLAST CHAR(20),  PRIMARY KEY (K_SIF));

 

CREATE TABLE I

     (I_SIF CHAR(6) NOT NULL, NAZIV CHAR(20) NOT NULL,STATUS SMALLINT, DRZAVA CHAR(20) NOT NULL,

            PRIMARY KEY (I_SIF));

CREATE TABLE KI 

         (K_SIF CHAR(5) NOT NULL, I_SIF CHAR(6) NOT NULL, IZDANJE SMALLINT NOT NULL, GODINA SMALLINT,

             TIRAZ INTEGER, PRIMARY KEY (K_SIF, I_SIF, IZDANJE), FOREIGN KEY (K_SIF) REFERENCES K ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (I_SIF) REFERENCES I ON DELETE CASCADE);

CREATE TABLE P

        (P_SIF CHAR(5) NOT NULL, IME CHAR(50) NOT NULL, BRNASLOVA SMALLINT, DRZAVA CHAR(20) NOT NULL   , PRIMARY KEY (P_SIF));

CREATE TABLE KP  (K_SIF CHAR(5) NOT NULL, P_SIF CHAR(5) NOT NULL, R_BROJ SMALLINT NOT NULL,

                       PRIMARY KEY (K_SIF, P_SIF),  FOREIGN KEY (K_SIF) REFERENCES K ON DELETE RESTRICT ON UPDATE  RESTRICT, FOREIGN KEY (P_SIF) REFERENCES P ON DELETE CASCADE);

 

 

2. U KOMANDNOJ LINIJI IZDAJTE NAREDBU ZA POZIV DATOTEKE

  mysql -h  host  -u user -D database   -p < putanja_do_datoteke/tabele.sql

NPR.  mysql  -h alas  -u   mi05007    -D mi05007 -p <  tabele.sql

 3. PROVERITE  KOJE SU TABELE PRISUTNE TAKO STO CETE OTKUCATI

   mysql > show tables;

 

INTERAKTIVNI SQL

 

Popunite red tabele komandom INSERT koju cete zadati u komandnoj liniji. Na primer:

mysql>INSERT into KP values ('k2', 'i2', 3)

 

ILI KREIRAJTE DATOTEKU  npr. KP.sql  sa sadrzajem

  INSERT into KP VALUES('k1', 'i3', 4);
  INSERT into KP VALUES('k2', 'i2', 8);
  INSERT into KP VALUES('k3', 'i1', 7);
  INSERT into KP VALUES('k4', 'i2', 2);
 

POKRENITE POPUNJAVANJE TABELE KP u MySQL monitoru kucanjem

 mysql -h  host  -u user -D database   -p < putanja_do_datoteke/KP.sql

Enter password:

Ako zelite da popunite tabele P, K, I, KP, KI preuzmite datoteku KP.sql ili otkucajte:

INSERT into P VALUES('p1','B.Copic',2,'Jugoslavija');
INSERT into P VALUES('p2','M.Benson',1,'Engleska');
INSERT into P VALUES('p3','B.Sljivic-Simsic',1,'Jugoslavija');
INSERT into P VALUES('p4','D.Maksimovic',2,'Jugoslavija');
INSERT into P VALUES('p5','C.J.Date',1,'Amerika');

INSERT into K VALUES('k1','Osma ofanziva','roman');
INSERT into K VALUES('k2','Nemam vise vremena','poezija');
INSERT into K VALUES('k3','Pionirska trilogija','roman');
INSERT into K VALUES('k4','Srpskohrvatsko-engleski recnik','leksikografija');
INSERT into K VALUES('k5','An Introduction to Database Systems','racunarstvo');
INSERT into K VALUES('k6','Trazim pomilovanje','poezija');

INSERT into I VALUES('i1','Prosveta',30,'Jugoslavija');
INSERT into I VALUES('i2','Addison Wesley',20,'Amerika');
INSERT into I VALUES('i3','Decje novine',10,'Jugoslavija');
INSERT into I VALUES('i4','Matica srpska',30,'Jugoslavija');


INSERT into KI VALUES('k1','i1',2,1965,10000);
INSERT into KI VALUES('k2','i1',2,1974,7000);
INSERT into KI VALUES('k3','i1',1,1975,10000);
INSERT into KI VALUES('k4','i1',2,1979,10000);
INSERT into KI VALUES('k5','i2',4,1986,5000);
INSERT into KI VALUES('k6','i3',1,1966,3000);
INSERT into KI VALUES('k6','i4',3,1988,5000);
  
INSERT into KP VALUES('k1','p1',1);
INSERT into KP VALUES('k2','p4',1);
INSERT into KP VALUES('k3','p1',1);
INSERT into KP VALUES('k4','p2',1);
INSERT into KP VALUES('k4','p3',2);
INSERT into KP VALUES('k5','p5',1);
INSERT into KP VALUES('k6','p4',1);





NA KRAJU RADA, PREKIDATE KONEKCIJU KOMANDOM  QUIT (ili \q) KOJU KUCATE U  mysql> prompt:

mysql> QUIT
Bye

Pod Unix-om, rad mozete zavrsiti i kucajuci Control-D.

Za dodatne informacije, procitajte deo o definisanju baze podataka iz uputstva za MySQL na Internetu na adresi www.mysql.com



KOMANDA mysql u KOMANDNOJ LINIJI

mysql  Ver 14.12 Distrib 5.0.67, for pc-linux-gnu (i686) using  EditLine wrapper
Copyright (C) 2000-2008 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license
Usage: mysql [OPTIONS] [database]
  -?, --help          Display this help and exit.
  -I, --help          Synonym for -?
  --auto-rehash       Enable automatic rehashing. One doesn't need to use
                      'rehash' to get table and field completion, but startup
                      and reconnecting may take a longer time. Disable with
                      --disable-auto-rehash.
  -A, --no-auto-rehash 
                      No automatic rehashing. One has to use 'rehash' to get
                      table and field completion. This gives a quicker start of
                      mysql and disables rehashing on reconnect. WARNING:
                      options deprecated; use --disable-auto-rehash instead.
  -B, --batch         Don't use history file. Disable interactive behavior.
                      (Enables --silent)
  --character-sets-dir=name 
                      Directory where character sets are.
  --default-character-set=name 
                      Set the default character set.
  -c, --comments      Preserve comments. Send comments to the server. The
                      default is --skip-comments (discard comments), enable
                      with --comments
  -C, --compress      Use compression in server/client protocol.
  -#, --debug[=#]     This is a non-debug version. Catch this and exit
  -D, --database=name Database to use.
  --delimiter=name    Delimiter to be used.
  -e, --execute=name  Execute command and quit. (Disables --force and history
                      file)
  -E, --vertical      Print the output of a query (rows) vertically.
  -f, --force         Continue even if we get an sql error.
  -G, --named-commands 
                      Enable named commands. Named commands mean this program's
                      internal commands; see mysql> help . When enabled, the
                      named commands can be used from any line of the query,
                      otherwise only from the first line, before an enter.
                      Disable with --disable-named-commands. This option is
                      disabled by default.
  -g, --no-named-commands 
                      Named commands are disabled. Use \* form only, or use
                      named commands only in the beginning of a line ending
                      with a semicolon (;) Since version 10.9 the client now
                      starts with this option ENABLED by default! Disable with
                      '-G'. Long format commands still work from the first
                      line. WARNING: option deprecated; use
                      --disable-named-commands instead.
  -i, --ignore-spaces Ignore space after function names.
  --local-infile      Enable/disable LOAD DATA LOCAL INFILE.
  -b, --no-beep       Turn off beep on error.
  -h, --host=name     Connect to host.
  -H, --html          Produce HTML output.
  -X, --xml           Produce XML output
  --line-numbers      Write line numbers for errors.
  -L, --skip-line-numbers 
                      Don't write line number for errors. WARNING: -L is
                      deprecated, use long version of this option instead.
  -n, --unbuffered    Flush buffer after each query.
  --column-names      Write column names in results.
  -N, --skip-column-names 
                      Don't write column names in results. WARNING: -N is
                      deprecated, use long version of this options instead.
  -O, --set-variable=name 
                      Change the value of a variable. Please note that this
                      option is deprecated; you can set variables directly with
                      --variable-name=value.
  --sigint-ignore     Ignore SIGINT (CTRL-C)
  -o, --one-database  Only update the default database. This is useful for
                      skipping updates to other database in the update log.
  --pager[=name]      Pager to use to display results. If you don't supply an
                      option the default pager is taken from your ENV variable
                      PAGER. Valid pagers are less, more, cat [> filename],
                      etc. See interactive help (\h) also. This option does not
                      work in batch mode. Disable with --disable-pager. This
                      option is disabled by default.
  --no-pager          Disable pager and print to stdout. See interactive help
                      (\h) also. WARNING: option deprecated; use
                      --disable-pager instead.
  -p, --password[=name] 
                      Password to use when connecting to server. If password is
                      not given it's asked from the tty.
  -P, --port=#        Port number to use for connection or 0 for default to, in
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
                      /etc/services, built-in default (3306).
  --prompt=name       Set the mysql prompt to this value.
  --protocol=name     The protocol of connection (tcp,socket,pipe,memory).
  -q, --quick         Don't cache result, print it row by row. This may slow
                      down the server if the output is suspended. Doesn't use
                      history file.
  -r, --raw           Write fields without conversion. Used with --batch.
  --reconnect         Reconnect if the connection is lost. Disable with
                      --disable-reconnect. This option is enabled by default.
  -s, --silent        Be more silent. Print results with a tab as separator,
                      each row on new line.
  -S, --socket=name   Socket file to use for connection.
  -t, --table         Output in table format.
  -T, --debug-info    Print some debug info at exit.
  --tee=name          Append everything into outfile. See interactive help (\h)
                      also. Does not work in batch mode. Disable with
                      --disable-tee. This option is disabled by default.
  --no-tee            Disable outfile. See interactive help (\h) also. WARNING:
                      option deprecated; use --disable-tee instead
  -u, --user=name     User for login if not current user.
  -U, --safe-updates  Only allow UPDATE and DELETE that uses keys.
  -U, --i-am-a-dummy  Synonym for option --safe-updates, -U.
  -v, --verbose       Write more. (-v -v -v gives the table output format).
  -V, --version       Output version information and exit.
  -w, --wait          Wait and retry if connection is down.
  --connect_timeout=# Number of seconds before connection timeout.
  --max_allowed_packet=# 
                      Max packet length to send to, or receive from server
  --net_buffer_length=# 
                      Buffer for TCP/IP and socket communication
  --select_limit=#    Automatic limit for SELECT when using --safe-updates
  --max_join_size=#   Automatic limit for rows in a join when using
                      --safe-updates
  --secure-auth       Refuse client connecting to server if it uses old
                      (pre-4.1.1) protocol
  --show-warnings     Show warnings after every statement.

Default options are read from the following files in the given order:
/etc/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 
The following groups are read: mysql client
The following options may be given as the first argument:
--print-defaults        Print the program argument list and exit
--no-defaults           Don't read default options from any options file
--defaults-file=#       Only read default options from the given file #
--defaults-extra-file=# Read this file after the global files are read

Variables (--variable-name=value)
and boolean options {FALSE|TRUE}  Value (after reading options)
--------------------------------- -----------------------------
auto-rehash                       FALSE
character-sets-dir                (No default value)
default-character-set             latin1
comments                          FALSE
compress                          FALSE
database                          (No default value)
delimiter                         ;
vertical                          FALSE
force                             FALSE
named-commands                    FALSE
local-infile                      FALSE
no-beep                           FALSE
host                              (No default value)
html                              FALSE
xml                               FALSE
line-numbers                      TRUE
unbuffered                        FALSE
column-names                      TRUE
sigint-ignore                     FALSE
port                              3306
prompt                            mysql> 
quick                             FALSE
raw                               FALSE
reconnect                         TRUE
socket                            /tmp/mysql.sock
table                             FALSE
debug-info                        FALSE
user                              (No default value)
safe-updates                      FALSE
i-am-a-dummy                      FALSE
connect_timeout                   0
max_allowed_packet                16777216
net_buffer_length                 16384
select_limit                      1000
max_join_size                     1000000
secure-auth                       FALSE
show-warnings                     FALSE