MySQL osnovno podešavanje

Uputstva, saveti i trikovi

Moderator: Urednik

Post Reply

Administrator
Administrator
offline
User avatar

Posts: 4590
Joined: 04 Feb 2011, 20:32
Location: Beograd
Contact:

Post Napisano: 16 Feb 2012, 12:56


1. Prvo proverite da li postoji korisnik mysql i da li je član grupe mysql.

Code: Select all

id mysql
Izlaz bi trebao da bude:

Code: Select all

uid=27(mysql) gid=27(mysql) groups=27(mysql)
U zavisnosti od izlaza, možda ćete morati kreirati korisnika, grupu ili dodati postojećeg korisnika u postojeću grupu. To je tematika za neko drugo uputstvo, tako da se time nećemo baviti ovde. Na Slaku 13.37, ovo je već podešeno.

2. Proverite dozvole nad direktorijumima /var/lib/mysql i /var/run/mysql:

Code: Select all

ls -ld /var/lib/mysql /var/run/mysql
Vlasnik direktorijuma bi trebao da bude korisnik mysql, a grupa mysql:

Code: Select all

drwxr-x--- 4 mysql mysql 4096 Feb  1 20:27 /var/lib/mysql
drwxr-xr-x 2 mysql mysql 4096 Feb  2 06:18 /var/run/mysql
Ako nije, promenite vlasnika i grupu. U Slaku 13.37, ovo je već podešeno. Ako vam zatreba pomoć, pogledajte uputstvo za chown (man chown).


3. U sledećem koraku potrebno je kreirati konfiguracionu datoteku. U /etc se nalazi nekoliko primera:
  • my-huge.cnf
  • my-large.cnf
  • my-medium.cnf
  • my-small.cnf

Ovi primeri predstavljaju konfiguracije za različite veličine sajtova:
my-small.cnf - mali sajt, deljeni server na kome je pokrenut mysql server (< 64MB RAM).
my-medium.cnf - srednji sajt, deljeni server na kome je pokrenut mysql server (> 64 MB RAM).
my-large.cnf - veliki sajt, većim delom posvećen mysql server (~512MB RAM)
my-huge.cnf - veliki sajt, u potpunosti posvećen mysql server (1-2GB RAM)

U većini slučajeva dovoljno je samo napraviti simbolički link my.cnf koji pokazuje na jedan od primera.

Konfiguraciona datoteka my.cnf je globalna, ali mogu postojati i dodatne konfiguracione datoteke: /var/lib/mysql/my.cnf za podešavanje serverski specifičnih opcija ili ~/my.cnf za korisnička prilagođavanja. Ove datoteke se ne kreiraju u podrazumevanoj instalaciji.

Za lokalni test server možete slobodno izabrati my-small.cnf.

4. Nakon toga je potrebno instalirati početnu bazu podataka. Ovo ćemo obaviti komandom mysql_install_db:

Code: Select all

mysql_install_db --user=mysql
Opcija "--user" je neophodna. U suprotnom, baza će biti instalirana kao root korisnik i kreirati probleme pri pokretanju servera (server će odbijati da se pokrene). Ovo se može rešiti deinstalacijom mysql paketa, zatim brisanjem svih u međuvremenu kreiranih datoteka i novom instalacijom.

5. Nakon toga je neophodno postaviti lozinku za root korisnika. Da bismo to uradili prvo moramo da pokrenemo mysql server:

Code: Select all

sh /etc/rc.d/rc.mysqld start
Nakon toga je preporučeno pokrenuti komandu:

Code: Select all

mysql_secure_installation
Ova komanda će postaviti sigurnija podešavanja od podrazumevanih. Pomoću ove komande možete i postaviti root lozinku.

Ako vam podrazumevana podešavanja odgovaraju (napr, lokalni test server bez izlaza na internet), umesto ovog koraka možete direktno postaviti root lozinku:

Code: Select all

mysqladmin -u root password 'lozinka'
Za one koji se prvi put susreću sa mysql, ova root lozinka NIJE ista stvar kao i lozinka root korisničkog naloga!

6. Da biste testirali instalaciju, pokrenite mysql klijent:

Code: Select all

mysql -u root -p
Kada budete upitani za lozinku, upišite gore izabranu lozinku. Ukoliko je konekcija uspešno postignuta, sada možete ukucati SQL komande. Recimo:

Code: Select all

show databases;
Izlaz bi trebao da izgleda slično ovome:

Code: Select all

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
+--------------------+
2 rows in set (0.00 sec)
SQL komande se obično navode velikim slovima, ali ukoliko upišete komandu i malim slovima, upit će biti uspešno izvršen.

7. Sledeći korak je kreiranje korisnika i postavljanje dozvola. Ovaj korak možete preskočiti ako ste početnik koji se "igra" na lokalnoj test mašini. U svakoj drugoj situaciji je preporučeno da kreirate pojedinačnog korisnika za svaki sajt hostovan na serveru koji bi trebalo da ima pristup MySQL bazi.

Novog korisnika možete kreirati uz pomoć komandi CREATE USER ili GRANT. CREATE USER kreira novog korisnika, ali ne postavlja dozvole. GRANT postavlja dozvole, a ako korisnik ne postoji, naknadno ga kreira. Dozvole za korisnika kreiranog sa CREATE USER ćete morati naknadno navesti korišćenjem GRANT.

Dozvole se specifikuju navođenjem naredbi kojima korisnik ima pristup (napr: INSERT, SELECT, UPDATE, DELETE, itd...). Za spisak dozvola (privilegija) koje su dostupne u MySQL-u pogledajte sledeći link:
http://dev.mysql.com/doc/refman/5.1/en/ ... privileges

Primer upotrebe CREATE USER i GRANT:

Code: Select all

create user 'bocke'@'localhost' identified by 'lozinka';
grant insert,update,delete,select on baza.* to 'bocke'@'localhost';
U ovom primeru, korisniku bocke su date insert, update, delete i select privilegije nad svim tabelama u bazi "baza". Takođe je moguće postaviti dozvole za pojedinačne tabele ili više baza istovremeno.

Za uklanjanje privilegija koristi se SQL naredba REVOKE. Primer:

Code: Select all

revoke insert on baza.* from 'bocke'@'localhost';
Da biste pogledali privilegije korisnika koristite naredbu SHOW GRANTS:

Code: Select all

show grants for 'bocke'@'localhost';
Korisniku možete postaviti ili promeniti lozinku korišćenjem naredbe SET PASSWORD:

Code: Select all

set password for 'bocke'@'localhost' = PASSWORD('lozinka');
Upravljanje korisničkim nalozima je takođe moguće direktnom manipulacijom grant tabela. Za više informacija možete pogledati MySQL korisničko uputstvo ili odgovarajuće strane navedene kao literatura na dnu ovog članka. Izabrao sam da to ovom prilikom ne obradim.

8. Možete postaviti da se MySQL server automatski pokrene pri pokretanju računara:

Code: Select all

chmod +x /etc/rc.d/rc.mysqld
ili ga pokretati i zaustavljati ručno po potrebi (recimo za testiranje web aplikacija ili web razvoj):

Code: Select all

sh /etc/rc.d/rc.mysqld start
odnosno za zaustavljanje:

Code: Select all

sh /etc/rc.d/rc.mysqld stop
9. Par dodatnih napomena. ;)

Jedna od čestih grešaka je zaboravljanje tačke-zareza (;) na kraju SQL komandi. U ovom slučaju MySQL će prebaciti upis komande u novi red, sve dok se ne otkuca tačka-zarez.

Za starije Slak verzije je moguće da će biti potrebno i neko dodatno podešavanje. Jedan deo toga je samo pomenut u početku ovog uputstva.

Za spisak alata za održavanje i administraciju MySQL-a, pogledajte sledeći odeljak zvaničnog uputstva:
http://dev.mysql.com/doc/refman/5.1/en/programs.html


10. Literatura:
http://www.basicconfig.com/linuxservers ... _slackware
http://www.brennan.id.au/17-MySQL_Server.html
http://dev.mysql.com/doc/refman/5.1/en/ ... users.html
http://dev.mysql.com/doc/refman/5.1/en/grant.html
http://dev.mysql.com/doc/refman/5.1/en/revoke.html
http://dev.mysql.com/doc/refman/5.1/en/ ... words.html


Post Reply

Who is online

Users browsing this forum: No registered users and 20 guests