Mysql server
Sisukord
Sissejuhatus
MySQL on vabatarkvaraline SQL baasil loodud andmebaasi haldamise tarkvara, mida kasutavad ka näiteks Google, Yahoo!, HP, MP3.com, Motorola, Silicon Graphics ja NASA ning ka arvatavasti umbkaudu enam-vähem 70% maailma veebilehtedest
Mysql populaarsus veebiaplikatsioonina on lähedalt seotud PHP programmeerimiskeele populaarsusega. Lausa standardiks on muutunud LAMP lahendus - Linux, Apache, Mysql, Php
Install
FreeBSD
cd /usr/ports/databases/mysql50-server make install clean
Gentoo
emerge mysql-server
Debian
...
Seadistus
FreeBSD
/etc/rc.conf lisame rea mysql_enable="YES"
Gentool piisab kui kirjutame
rc-update add mysql default
installime default baasi ja seadistame õigused kuna vaikimisi tekib see root omandusse
FreeBSD
/usr/local/bin/mysql_install_db chown -R mysql:mysql /var/db/mysql
my.cnf
Kõiki mysql peamisi võimalusi saab seadistada my.cnf nimelise seadistusfailiga. Seadistusfail tuleb paigutada ebatüüpiliselt sageli mitte /etc harusse vaid vaikimisi otsib mysql seda hoopis enda andmefailide juurest. St enamast /var alt näit FreeBSD's /var/db/mysql
query cache saame seadistada reaga
query_cache_size= 32M
Graafik keskmisest sajakonna baasiga mysql serverist
Ligipääsuõigused
strdime mysql serveri
/usr/local/etc/rc.d/mysql-server start
või linux
/etc/init.d/mysqld start
Ning seejärel seadistame root parooli
/usr/local/bin/mysqladmin -u root password 'parool234'
Kontrollime kas mysql lubab ligi ja paroolita sisenemine keelatud
# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.1.15-beta FreeBSD port: mysql-server-5.1.15 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
Kui näiteks oleks vaja võimaldada mysql'i logimist mõnest teisest serverist tuleks käivitada käsud
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'host.edu.ee' IDENTIFIED BY 'parool' WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec)
MySQL'i kasutamine
Kui server käib, siis saab seda kasutada käsureal programmi 'mysql' abil. Te saate ette uue prompti ja saate teha nt. sellise asja
antud juhul on eesmärk - luua andmebaas minu_sobrad - sisestada sinna andmed - teha päring mis peaks ekraanile tooma kõigi inimeste nimed kes elavad Tartus
Seanss näeb välja nii:
# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 10 to server version: 3.22.15-gamma Type 'help' for help.
Andmetabeli loomine käsurealt
Enne järgneva tegevuse juurde asumist logige enda MySQLi serverisse
bash$ mysql -h www.zoo.edu.ee -u zoo -pzooparool Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 57764 to server version: 3.22.32-log Type 'help' for help. mysql>
Andmetabeli loomisel peab näitama millisesse andmebaasi see tekitatakse. Selleks tuleb võtta kasutusele käsuga 'use' andmebaas, milleks on antud juhul zoo
mysql> use zoo Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql>
Kirjeldame kolme väljaga andmetabeli inimesed:
- nimi - tekstiline andmeväli, kuni 15 tähemärki
- vanus - täisarvuline andmeväli
- elukoht - tekstiline andmeväli, kuni 18 tähemärki
Selleks tuleb anda korraldus
mysql> create table inimesed (nimi varchar(15), vanus int, elukoht varchar(18));
MySQLi käsk lõppeb semikooloniga (;). Seejärel sisetame andmetabelisse kolm kirjet
nimi vanus elukoht Mart 16 Narva Priit 17 Tallinn Laa 12 Kuressaare
Selleks tuleb anda korraldused:
mysql> INSERT INTO inimesed VALUES ('Mart', '16', 'Narva'); mysql> INSERT INTO inimesed VALUES ('Priit', '17', 'Tallinn'); mysql> INSERT INTO inimesed VALUES ('Laa', '12', 'Kuressaare');
MySQLi kliendi käsureal saab kursorit liigutada näiteks vasakule ja paremale nooleklahvide abil ning olemasolevat teksti redigeerida. Sarnaselt saab varemantud käskude vahel valida neid sirvides üles ja alla nooleklahvide abil.
Otse käsurealt on tõenäoliselt tülikas sisestada suurt hulka andmeid, sellepärast selgitame allpool kuidas seda teha 'batch' rezhiimis.
Olles lõpetanud andmete sisestamise sulgeda MySQLi klient käsuga 'quit'.
Päringu sooritamine käsureal
Päringu sooritamine käsurealt eeldab, et teil on olemas andmed.
Esmalt logige enda MySQLi andmebaasi sisse ja võtke kasutusele oma andmebaas.
bash$ mysql -h www.zoo.edu.ee -u zoo -pzooparool mysql> use zoo
Esitame näiteks päringu, mis näitab andmetabeli inimesed kõikide kirjete kõiki välju
mysql> select * from inimesed; +-------+-------+------------+ | nimi | vanus | elukoht | +-------+-------+------------+ | Mart | 16 | Narva | | Priit | 17 | Tallinn | | Laa | 12 | Kuressaare | +-------+-------+------------+ 3 rows in set (0.00 sec)
Vahel on abiks näha andmetabeli struktuuri, selleks andke korraldus
mysql> show columns from inimesed; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | nimi | varchar(15) | YES | | NULL | | | vanus | int(11) | YES | | NULL | | | elukoht | varchar(18) | YES | | NULL | | +---------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
Olles lõpetanud päringud väljuge MySQLi kliendist käsuga 'quit'. Andmetabeli kustutamine käsureal
Olemasoleva andmetabeli kustutamiseks andmebaasist logige end anmbebaasi sisse ja andke korraldus
mysql> drop table inimesed; Query OK, 0 rows affected (0.01 sec)
Arvestage, et nii kustutatakse kõik andmed, mis sisalduvad kõnealuses andmetabelis ja te olete neist jäädavalt ilma.
Batch rezhiimi kasutamine
Mahukamate sisestuste puhul ei ole otstarbekas anda MySQLile käske käsitsi, vaid tuleks kasutada MySQLi klienti batch rezhiimis. Sel puhul täidetakse käske samuti ükshaaval, kuid mysql ei oota neid klaviatuurilt, vaid loeb tekstifailist. Kui antud käsud genereerivad väljundi, siis saadekse see programmi väljundisse, mida saab UNIXi kooriku vahenditega ümber suunata.
Näiteks lisame batch rezhiimis andmebaasi inimesed kirjed
Leida 18 Elva Maie 45 Põlva Väino 39 Haapsalu
Selleks tekitage järgmise sisuga tekstifail andmelisa.mysql-batch
use zoo INSERT INTO inimesed VALUES ('Leida', '18', 'Elva'); INSERT INTO inimesed VALUES ('Maie', '45', 'Põlva'); INSERT INTO inimesed VALUES ('Väino', '39', 'Haapsalu'); quit
Ning andmete lisamiseks andke operatsioonisüsteemi viibast käsk
bash$ mysql -h www.zoo.edu.ee -u zoo -pzooparool < andmelisa.mysql-batch
Tulemusena lisati andmetabelisse zoo andmed Leida, Maie ja Väino kohta.
Batch rezhiimis saab sooritada ka päringut. Näiteks salvestame kõigi kirjete kõigi väljade sisu faili koik.inimesed
Selleks koostame esmalt sobiva batch-faili koik.mysql-batch
use zoo select * from inimesed; quit
Ning käivitame selliselt
bash$ mysql -h www.zoo.edu.ee -u zoo -pzooparool < koik.mysql-batch > koik.inimesed
Tulemusena suunatakse batch-failis sisalduvad käsud MySQLi kliendi sisendisse ning see, mis selle peale vastatakse suunatakse faili koik.inimesed. Failis koik.inimesed on kolm tulpa üksteisest tabulaatoritega eraldatud
nimi vanus elukoht Mart 16 Narva Priit 17 Tallinn Laa 12 Kuressaare Leida 18 Elva Maie 45 Pulva Vdino 39 Haapsalu
Andmebaasi varukoopia
Iga kasutaja enda huvides on, et tal oleks oma andmebaasist varukoopia. MySQLi puhul saab programmiga mysqldump hõlpsasti salvestada andmebaasi andmetabeli struktuuri ja/või sisu taastamiseks vajalikud käsud tekstifaili.
Andmebaasi zoo andmetabeli inimesed struktuuri väljastab korraldus
bash$ mysqldump -d -h www.zoo.edu.ee -u zoo -pzooparool zoo inimesed # MySQL dump 7.1 # # Host: www.zoo.edu.ee Database: zoo #-------------------------------------------------------- # Server version 3.22.32-log # # Table structure for table 'inimesed' # CREATE TABLE inimesed ( nimi varchar(15), vanus int(11), elukoht varchar(18) );
kus on kasutatud selliseid võtmeid ja argumente:
- -t väljastatakse struktuur
- -h MySQL serveri nimi
- -u MySQL serveri kasutajanimi
- -p MySQL serveri kasutaja parool
kaks viimast argumenti on andmebaasi nimi (zoo) ja andmetabeli nimi (inimesed)
Kasutades UNIXi ümbersuunamisi saab selle väljundi suunata ka faili
bash$ mysqldump -d -h www.zoo.edu.ee -u zoo -pzooparool zoo inimesed > zoo.str.inimesed.sql
Andmebaasi zoo andmetabeli inimesed sisu väljastab eelmisele sarnane korraldus kasutades võtme -d asemel võtit -t
bash$ mysqldump -t -h www.zoo.edu.ee -u zoo -pzooparool zoo inimesed # MySQL dump 7.1 # # Host: www.zoo.edu.ee Database: zoo #-------------------------------------------------------- # Server version 3.22.32-log # # Dumping data for table 'inimesed' # INSERT INTO inimesed VALUES ('Mart',16,'Narva'); INSERT INTO inimesed VALUES ('Priit',17,'Tallinn'); INSERT INTO inimesed VALUES ('Laa',12,'Kuressaare'); INSERT INTO inimesed VALUES ('Leida', '18', 'Elva'); INSERT INTO inimesed VALUES ('Maie', '45', 'Põlva'); INSERT INTO inimesed VALUES ('Väino', '39', 'Haapsalu');
Kirjeldatud moel saadud väljundit saab näiteks kasutada batch rezhiimis andmebaasi taastamiseks. Samuti on võimalik UNIXi umbersuunamisi kasutades andmeid üle võrgu kopeerida suunates väljundi ümber mõne teise MySQLi serveri andmebaasi sisendisse.
Soovides salvestada andmebaasi kõigi andmetabelite sisu ja struktuuri andke korraldus
bash$ mysqldump --skip-lock-tables -h www.zoo.edu.ee -u user -p parool basename > basename-backup.sql
Nendest andmetest toimub andmebaasi taastamine selliselt
bash$ mysql -h www.zoo.edu.ee -u zoo -pzooparool zoo < zoo.opt.sql
Lõppsõna
Edasi võib juba paigaldada apache ja php ning phpMyAdmin'i edasiseks tööks http://www.phpmyadmin.net/home_page/index.php