MySQL-aloitusopas
1.
Aloittaminen MySQL:lla
Taustatietoa
MySQL on suosittu tietokantapalvelin, jota käytetään erilaisissa sovelluksissa.
SQL on lyhenne sanoista Strcutured Query Language, mitä kieltä MySQL
käyttää kommunikointiin muiden ohjelmien kanssa. MySQL:lla on omat laajennetut
SQL-toimintonsa, joilla tarjotaan lisätoimivuutta käyttäjille. Tässä
dokumentissa tutustumme, kuinka teet ensimmäisen MySQL-asennuksesi, luomme
tietokantoja ja taulukoita, sekä luomme uusia käyttäjiä. Aloitetaan
asennuksesta.
MySQL-asennus
Aivan ensimmäiseksi varmista, että MySQL on asennettu järjestelmääsi. Jos
tarvitset jotain tiettyjä MySQL-toimintoja, varmista että sinulla on
vaadittavat USE-asetukset, sillä näin saat oikeat viritykset asennukseen.
Koodilistaus 1.1: Asennetaan MySQL |
# emerge --pretend --verbose mysql
# emerge mysql
|
Asennuksen päätteeksi näet seuraavan tiedotteen:
Koodilistaus 1.2: MySQL:n einfo-viesti |
Haluat ehkä suorittaa seuraavan:
"emerge =dev-db/mysql-[version] --config"
jos tämä on uusi asennus.
|
Koska tämä on uusi asennus, suoritamme komennon. Sinun täytyy painaa
ENTERiä, kun kehote tulee asettaessasi MySQL-tietokantaa. Tässä
määritellään MySQL:n tärkein tietokanta, mikä sisältää järjestelmän
valvonnalliset tiedot, kuten tietokannat, taulukot, käyttäjät, oikeudet jne.
Tässä vaiheessa myös ehdotetaan, että vaihtaisit pääkäyttäjän salasanaa
mahdollisimman pikaisesti. Näin tosiaankin teemme, muuten joku muu voi sen
tehdä ja hakkeroida meidän MySQL-palvelimellemme.
Koodilistaus 1.3: MySQL:n muokkaaminen |
# emerge --config =dev-db/mysql-[versio]
* MySQL DATADIR on sijainnissa /var/lib/mysql
* Paina ENTER luodaksesi "mysql"-tietokanta ja asettaaksesi asianmukaisemmat
* oikeudet, tai Control-C poistuaksesi...
Valmistellaan db-taulukko
Valmistellaan host-taulukko
Valmistellaan user-taulukko
Valmistellaan func-taulukko
Valmistellaan tables_priv-taulukko
Valmistellaan columns_priv-taulukko
Asennetaan kaikki valmisteltut taulukot
Käynnistääksesi mysqld:n bootista, sinun täytyy kopioida support-files/mysql.server
oikeaan paikkaa järjestelmässäsi
MUISTATHAN ASETTAA SALASANAN MySQL:n root-KÄYTTÄJÄLLE(pääkäyttäjä)
Ja tehdäksesi tämän, suorita seuraavat komennot käynnistääksesi
palvelimen ja vaihtaaksesi sopivat salasanat:
/etc/init.d/mysql start
/usr/bin/mysqladmin -u root -h pegasos password 'new-password'
/usr/bin/mysqladmin -u root password 'new-password'
Riippuen asetuksistasi, -p-valitsinta saatetaan tarvita
viimeisessä komennossa. Katso manuaaleista lisää yksityiskohdista.
* Turvallisuussyistä johtuen, sinun on syytä asettaa MySQL pääkäyttäjän
* salasana mahdollisimman pikaisesti.
|
Tärkeää:
mysql-4.0.24-r2-versiosta lähtien salasanat on annettava asettelu-vaiheessa,
jotta pääkäyttäjän kirjautuminen olisi turvallisempaa.
|
Skripti tulostaa komennot, joita tarvitaan asettaaksemme salasanan,
joten suoritamme ne nyt.
Koodilistaus 1.4: Asetetaan MySQL-pääkäyttäjän salasana |
# /etc/init.d/mysql start
* Re-caching dependency info (mtimes differ)...
* Käynnistetään mysqld (/etc/mysql/my.cnf) ... [ ok ]
# /usr/bin/mysqladmin -u root -h localhost password 'new-password'
|
Nyt voit testata, että pääkäyttäjän salasana luotiin onnistuneesti, yrittämällä
kirjautua MySQL-palvelimelle:
Koodilistaus 1.5: Kirjautuminen MySQL-palvelimelle, käyttämällä "mysql"-komentoa |
$ mysql -u root -h localhost -p
Anna salasanasi:
Tervetuloa MySQL:een. Komennot päättyvät joko ; tai \g.
MySQL-yhteytesi tunnus on 4 palvelin versioon: 4.0.24-debug
Kirjoita 'help;' tai '\h' saadaksesi apua. Kirjoita '\c' tyhjentääksesi ruudun.
mysql>
|
Valitsin -u asettaa käyttäjän, joka on kirjautumassa sisään. Valitsin
-h asettaa koneennimen. Tämä on yleensä localhost, paitsi jos
olet pystyttämässä etäserveriä. Lopuksi, valitsin -p kertoo
mysql-clientille , että tulet antamaan salasanan, päästäksesi sisään
tietokantaan. Huomaa mysql> kehote. Siihen kirjoitat kaikki
komentosi. Nyt kun meillä on käytössämme mysql-kehote pääkäyttäjänä, voimme
aloittaa tietokannan muokkaamisen.
2.
Asetusten tekeminen tietokantaan
Tietokannan luominen
Olemme nyt kirjautuneet sisään ja mysql-kehote on näytöllä. Katsotaanpa
ensin, mitä tietokantoja meillä on. Ne me näemme, kun käytämme komentoa
SHOW DATABASES.
Koodilistaus 2.1: MySQL:n tietokannat |
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 riviä (0.09 sek)
|
Tärkeää:
Kannattaa huomioida, että MySQL-komentojen pitää päättyä puolipisteeseen —
;
|
Siitä huolimatta, että ”test”-tietokanta on jo luotuna, me luomme oman
tietokannan. Tietokanta luodaan käyttämällä komentoa CREATE DATABASE.
Luomme nyt tietokannan nimeltä ”gentoo”.
Koodilistaus 2.2: Luodaan "gentoo"-tietokanta |
mysql> CREATE DATABASE gentoo;
Kysely onnistui, 1 rivi vaikutusalueella (0.08 sek)
|
Vastaus kertoo meille, että komento on suoritettu ilman virheitä. Tässä
tapauksessa, yhtä riviä on muokattu. Tämä on viittaus ”mysql”-tietokantaan,
joka pitää kirjaa kaikista tietokannoista. Sinun ei tarvitse miettiä turhaan
taustalla tapahtuvia yksityiskohtia. Viimeinen numero kertoo, kuinka nopeasti
kysely suoritettiin. Voimme tarkistaa, että tietokanta on tosiaankin olemassa,
suorittamalla taas komennon SHOW DATABASES.
Koodilistaus 2.3: Tarkistetaan, että tietokannan luominen onnistui |
mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| gentoo |
| mysql |
| test |
+----------+
3 riviä (0.00 sek)
|
Ja tosiaankin, tietokanta on nyt luotuna. Seuraava toimenpide, kun luomme
taulukoita uuteen ”gentoo”-tietokantaamme, on valita se käytettäväksi
tietokannaksi. Ja tämä onnistuu komennolla USE. USE-komentoon
liitetään sen tietokannan nimi, joka halutaan käyttöön. Toinen vaihtoehto on
laittaa tietokannanimi komentorivillä valitsimen -p jälkeen. Mennäänpä
eteenpäin ja vaihdetaan ”gentoo”-tietokantaan.
Koodilistaus 2.4: Siirrytään "gentoo"-tietokantaan |
mysql> USE gentoo;
Tietokanta vaihdettu
|
Ja tällä hetkellä käytössä oleva tietokanta on aikaisemmin luomamme
”gentoo”-tietokanta. Nyt kun se on käytössämme, voimme luoda muutaman taulukon
ja laittaa niihin tietoa.
3.
Työskentely MySQL-taulukoiden kanssa
Taulukon luominen
MySQL:n rakenteessa on tietokannat, taulukot, tietueet ja sarakkeet.
Tietokannat muodostuvat taulukoista, taulukot muodostuvat tietueista, tietueet
muodostuvat sarakkeista, mitkä pitävät sisällään varsinaisen tiedon. Rakenne
antaa käyttäjien valita, kuinka he haluavat päästä käsiksi tietoihinsa. Tähän
asti olemme toimineet tietokantojen kanssa, mutta nyt siirrymme työskentelemään
taulukoiden kanssa. Ensiksikin, taulukot voidaan listata samalla tavalla kuin
tietokannatkin, käyttämällä komentoa SHOW TABLES. Vielä meillä ei ole
taulukoita ”gentoo”-tietokannassa, niinkuin voimme todeta suorittamalla
komennon:
Koodilistaus 3.1: Tyhjä "gentoo"-tietokanta |
mysql> SHOW TABLES;
Tyhjä joukko (0.00 sek)
|
Meidän siis tarvitsee luoda muutama taulukko. Siihen käytämme komentoa
CREATE TABLE. Tämä komento on kuitenkin hiukan erilainen, kuin
yksinkertainen komento CREATE DATABASE. Komento vaatii listan
argumentteja. Seuraavassa näet sen muodon:
Koodilistaus 3.2: CREATE TABLE Syntaksi |
CREATE TABLE [table_name] ([field_name] [field_data_type]([size]));
|
table_name on se taulukon nimi, jonka haluamme luoda. Tässä tapauksessa
luodaan taulukko developers(kehittäjät). Tämä taulukko sisältää
kehittäjien nimen(name), sähköpostiosoitteen(email) ja työnimikkeen(job).
field_name sisältää sarakkeen nimen. Tässä tapauksessa meillä on kolme
sarakkeen nimeä: name, email ja job. field_data_type on se muoto, jolla
tiedot on varastoitu. Saatavilla olevat erilaiset muodot löydät MySQL Column
Types Page-sivulta. Meidän tapauksessamme käytämme sarakkeessa
tiedon muotoa VARCHAR. VARCHAR on yksi yksinkertaisimmista
tiedon muodoista, kun työskennellään merkkijonojen kanssa. size kertoo
kuinka paljon tietoa yhteen tietueen sarakkeeseen on varastoituna. Tässä
tapauksessa määrä on 128. Tämä tarkoittaa sitä, että tietueen yhdessä
sarakkeessa voi olla VARCHAR-tietoa 128 tavua. Sinä voit toistaiseksi
huoletta ajatella, että tietueen yhdessä sarakkeessa on tällöin 128 merkkiä,
kuitenkin tälle on jonkin verran teknisempi selitys, mitä tuo määrä sinulle
tarjoaa. Nyt kun on tiedämme miten taulukko luodaan, niin luodaan se.
Koodilistaus 3.3: Luodaan taulukko |
mysql> CREATE TABLE developers ( name VARCHAR(128), email VARCHAR(128), job VARCHAR(128));
Kysely onnistui, 0 riviä vaikutusalueella (0.11 sek)
|
Näyttäisi siltä, että taulukko on luotu oikein. Tarkistetaanpa se vielä
komennolla SHOW TABLES:
Koodilistaus 3.4: Tarkistetaan taulukon olemassaolo |
mysql> SHOW TABLES;
+------------------+
| Tables_in_gentoo |
+------------------+
| developers |
+------------------+
1 rivi (0.00 sek)
|
Kyllä, taulukko näkyy nyt. Siinä ei kuitenkaan ole vielä mitään tietoa
muodostamissamme kentissä. Siksi käytämme komentoa DESCRIBE (tai
lyhyesti DESC), mikä vaatii taulukon nimen argumentikseen. Katsotaanpa,
mitä se näyttää meille ”developers”-taulukosta.
Koodilistaus 3.5: "developers"-taulukon kuvaus |
mysql> DESCRIBE developers;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name | varchar(128) | YES | | NULL | |
| email | varchar(128) | YES | | NULL | |
| job | varchar(128) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
3 riviä (0.00 sek)
|
Tämä näyttää eri sarakkeet ja niiden tyypit. Se näyttää myös muutaman
lisäominaisuuden, joita ei käydä läpi tässä ohjeessa. Voit kuitenkin vapaasti
etsiä MySQL Reference
Manual -sivulta lisätietoa aiheesta. Nyt meillä on taulukko,
jonka kanssa voimme työskennellä. Jatketaanpa nyt eteenpäin ja aloitetaan
taulukon täyttö.
Syötetään tietoa MySQL:ssä
Nyt voimme syöttää siihen tietoa komennolla INSERT. Niin kuin
komennolla CREATE TABLE, tälläkin komennolla on tietty
muoto:
Koodilistaus 3.6: INSERT Syntaksi |
INSERT INTO table (col1, col2, ...) VALUES('value1', 'value2', ...);
|
Tällä komennolla lisätään tietue taulukkoon. table-kohtaan laitamme sen
MySQL-taulukon, johon haluamme tiedot syöttää. Taulukon nimen jälkeen laitetaan
sarakkeiden nimet, joihin tieto laitetaan ja VALUE() sisältää ne arvot,
jotka haluamme syöttää taulukkoon. Voit jättää pois sarakeluettelon, jos lisäät
tietoa jokaiseen sarakkeeseen ja lisäät tiedot samassa järjestyksessä kuin
sarakkeet on määritelty. Tässä tapauksessa, haluamme lisätä tietoa
”developers”-taulukkoon. Laitetaanpa nyt sinne esimerkki tietueet:
Koodilistaus 3.7: Syötetään tietoa "developers"-taulukkoon |
mysql> INSERT INTO developers VALUES('Joe Smith', 'joesmith@gentoo.org', 'toolchain');
Kysely onnistui, 1 rivi vaikutusalueella (0.06 sek)
mysql> INSERT INTO developers (job, name) VALUES('outsourced', 'Jane Doe');
Kysely onnistui, 1 rivi vaikutusalueella (0.01 sek)
|
Palautteen mukaan näyttäisi siltä, että tietue on lisätty oikein. Mutta mitäs
jos haluamme lisätä enemmän, kuin vain yhden tietueen? Tässä tapauksessa
kannattaa käyttää LOAD DATA-komentoa. Tämä lisää tietueita tiedostosta,
jossa on käytetty sarkainta sarakkeiden välillä. Me käytämme tiedostoa
records.txt. Tässä on esimerkki:
Koodilistaus 3.8: ~/records.txt |
John Doe johndoe@gentoo.org portage
Chris White chriswhite@gentoo.org documentation
Sam Smith samsmith@gentoo.org amd64
|
Tärkeää:
Varmistu siitä, mitä tietoa käsittelet. Ei ole turvallista käyttää komentoa
LOAD DATA, jos et ole varma tiedoston sisällöstä!
|
LOAD DATA-komennolla on laajempiakin määritelmiä, mutta me
käytämme tässä yksinkertaisinta.
Koodilistaus 3.9: LOAD DATA Syntaksi |
LOAD DATA LOCAL INFILE '/path/to/filename' INTO TABLE table;
|
/path/to/filename on hakemisto ja tiedoston nimi,
jota käytetään. table kohtaan sen taulukon nimi, jota käytetään. Tässä
tapauksessa tiedostomme on ~/records.txt ja taulukko
on ”developers”.
Koodilistaus 3.10: Haetaan tiedot tiedostosta |
mysql> LOAD DATA LOCAL INFILE '~/records.txt' INTO TABLE developers;
Kysely onnistui, 3 riviä vaikutusalueella (0.00 sek)
Tulokset: 3 Poistettu: 0 Ohitettu: 0 Varoitukset: 0
|
Tärkeää:
Jos ilmenee jotain erikoista käyttäytymistä, varmista että sarakkeet on
erotettu toisistaan käyttäen sarkainta. Jos liität tietoa tiedostoon jostain
toisesta lähteestä, se on saattanut muuttaa sarkainvälit ”normaaleiksi”
välilyönneillä tehdyiksi.
|
Se toimi hienosti. Tämä kuitenkin vain lisäsi tietueen, eikä antanut
mahdollisuutta kontrolloida MySQL:tä. Monet verkkosovellukset käyttävät
sql-skriptejä muokkaamaan MySQL nopeasti ja helposti. Jos haluat käyttää
sql-skriptiä, sinun täytyy ajaa MySQL komentojonotilassa, tai käyttää
tiedostoa komentojen lähteenä.
Tässä esimerkissä ajetaan MySQL komentojonotilassa:
Koodilistaus 3.11: MySQL komentojonotilassa |
$ mysql -u root -h localhost -p < sqlfile
|
Niinkuin LOAD DATAn kanssa, varmistu siitä mitä sqlfile
tekee. Virhe saattaa vahingoittaa tietokantaasi. Toinen tapa jolla voit
toteuttaa tämän, on käyttää source-komentoa. Tämä komento suorittaa
mysql-komennot sql-tiedostosta, silloin kun mysql on interaktiivisessa tilassa.
Näin tapahtuu sql-tiedoston käyttäminen komentojen lähteenä:
Koodilistaus 3.12: Käytä sql-tiedostoa komentojen lähteenä |
mysql> source sqlfile;
|
Jos huomaat verkkosovelluksen haluavan sinun suorittaa sql-tiedoston,
kahta ylläolevaa komentoa käytetään tehtävän suorittamiseksi. Meillä on nyt
taulukko asetettuna, siis kuinka tarkistamme sarakkeet? Sen teemme etsimällä
tietoa käyttämällä kyselyitä.
MySQL-taulukoiden selaaminen käyttäen kyselyitä
Kyselyt on yksi tärkeimmistä ominaisuuksista missä tahansa SQL-tietokannassa.
Ne auttavat muuttamaan taulukoiden tiedot käyttökelpoisiksi. Suurin osa
kyselyistä tehdään komennolla SELECT. SELECT-komento on melko
monimutkainen ja me tutustumme vain kolmeen tärkeimpään muotoon tässä ohjeessa.
Koodilistaus 3.13: SELECT-komennon muodot |
SELECT * FROM table;
SELECT * FROM table WHERE field=value;
SELECT field1,field2,field3 FROM table [WHERE field=value];
|
Katsotaanpa nopeasti ensimmäistä muotoa. Se on suhteellisen
yksinkertainen ja antaa yleisnäkymän taulukostasi. Me suoritamme
sen nyt, jotta näkisimme mitä tietoa meillä on tähän mennessä.
Koodilistaus 3.14: Taulukon sisältö |
mysql> SELECT * FROM developers;
+-------------+-----------------------+----------------+
| name | email | job |
+-------------+-----------------------+----------------+
| Joe Smith | joesmith@gentoo.org | toolchain |
| John Doe | johndoe@gentoo.org | portage |
| Chris White | chriswhite@gentoo.org | documentation |
| Sam Smith | samsmith@gentoo.org | amd64 |
| Jane Doe | NULL | Outsourced job |
+-------------+-----------------------+----------------+
5 riviä (0.00 sek)
|
Näemme nyt molemmat tiedot, ne jotka lisäsimme käyttäen INSERT-komentoa,
sekä LOAD DATA-komennolla lisätyt. Jos nyt halumme
nähdä vain Chris Whiten tietueen, voimme tehdä sen käyttäen toisena ollutta
muotoa, jonka näytimme aiemmin.
Koodilistaus 3.15: Valitaan tietty tietue komennolla SELECT |
mysql> SELECT * FROM developers WHERE name = 'Chris White';
+-------------+-----------------------+---------------+
| name | email | job |
+-------------+-----------------------+---------------+
| Chris White | chriswhite@gentoo.org | documentation |
+-------------+-----------------------+---------------+
1 rivi (0.08 sek)
|
Niin kuin odotettavissa oli, ne tietyt asiat joita haimme, on valittuna. Nyt
voimme katsoa kuinka toimitaan, kun halutaan vain henkilön työnimike ja
sähköpostiosoite, ei nimeä. Sen me voimme tehdä käyttämällä kolmatta muotoa
komennosta SELECT, jonka näytimme aiemmin.
Koodilistaus 3.16: Valitaan tietty tietue ja sarake käyttäen komentoa SELECT |
mysql> SELECT email,job FROM developers WHERE name = 'Chris White';
+-----------------------+---------------+
| email | job |
+-----------------------+---------------+
| chriswhite@gentoo.org | documentation |
+-----------------------+---------------+
1 rivi (0.04 sek)
|
Tällä valintatavalla on helpompi käsitellä tietoa, varsinkin suurempia määriä,
niinkuin tulemme näkemään myöhemmin. Juuri nyt, kun olemme
pääkäyttäjänä, meillä on rajoittamattomat oikeudet MySQL:ssä.
Palvelinympäristössä käyttäjä tälläisillä oikeuksilla voi olla ongelmallinen.
Kontroloidaksemme kuka tekee mitäkin tietokannoissa, asetamme oikeudet.
4.
MySQL-oikeudet
Myönnetään oikeuksia GRANT-komennolla
Oikeuksilla tarkoitetaan sitä, miten käyttäjät pääsevät käsiksi tietokantoihin,
taulukoihin, oikeastaan kaikkeen. Juuri nyt ”gentoo”-tietokannassa, MySQL:n
pääkäyttäjä on ainoa joka pääsee käyttämään sitä ja jakamaan oikeuksia. Luodaan
nyt kaksi yleisesti käytettyä käyttäjää, ”guest” ja ”admin”, jotka pääsevät
”gentoo”-tietokantaan ja voivat käsitellä sen tietoja. ”guest”-käyttäjällä on
rajoitetummat oikeudet. Ainoa mitä se pystyy tekemään, on saada tietoa
tietokannasta, eikä muuta. ”admin”-käyttäjällä on samat oikeudet kuin
pääkäyttäjällä, mutta vain ”gentoo”-tietokantaan. (ei ”mysql”-tietokantaan).
Ennenkuin aloitamme, katsotaanpa hieman tarkemmin jonkin verran
yksinkertaistettua muotoa GRANT-komennosta.
Koodilistaus 4.1: GRANT Syntaksi |
GRANT [privileges] ON database.* TO '[user]'@'[host]' IDENTIFIED BY '[password]';
|
Huomaa:
GRANT-komento on tarkoitettu käytettäväksi luotaessa käyttäjiä. MySQL:n
myöhemmät versiot kuitenkin tulevat sisältämään CREATE_USER-toiminnon,
silti GRANT-komentoa pidetään parempana.
|
Aluksi meillä on ne oikeudet, jotka olemme halunneet antaa.
Sen lisäksi mitä olemme oppineet tähän mennessä,
niin tässä on muutamia oikeuksia, joita voit asettaa.
-
ALL — Antaa kaikki oikeudet tietokantaan
-
CREATE — Sallii käyttäjän luoda taulukoita
-
SELECT — Sallii käyttäjän tehdä kyselyitä
-
INSERT — Antaa käyttäjän lisätä tietoa taulukoihin
-
SHOW DATABASES — Sallii käyttäjän katso listaa tietokannoista
-
USAGE — Käyttäjällä ei ole mitään oikeuksia
-
GRANT OPTION — Sallii käyttäjän myöntää oikeuksia
Huomaa:
Jos käytät MySQL:tä niin, että se on yhteydessä verkko-sovellukseen,
CREATE, SELECT, INSERT (käyty läpi tässä ohjeessa),
DELETE and UPDATE (lisätiedon saamiseksi tutki linkkiä MySQL Reference
Manual - GRANT and REVOKE Syntax kappaletta) ovat ainoat oikeudet
joita todennäköisesti tarvitset. Monet tekevät sen virheen, että myöntävät
kaikki oikeudet, kun se ei ole tarpeellista. Tarkista sovelluksen kehittäjiltä,
aiheuttavatko nämä oikeudet ongelmia normaaleissa toimenpiteissä.
|
”Admin”-käyttäjälle sopiva vaihtoehto on ALL. ”Guest”-käyttäjälle SELECT
on riittävä, sillä saa vain lukuoikeudet. database kohtaan laitetaan se
tietokanta, johon haluamme käyttäjälle antaa oikeudet. ”Gentoo” on tässä
esimerkissä se tietokanta. Merkintä .* tarkoittaa kaikkia taulukoita. Jos
haluat, voit antaa taulukko kohtaiset oikeudet. User-kohtaan laitat käyttäjän
nimen ja host-kohtaan sen koneennimen, mistä käyttäjä kirjautuu. Suurimmassa
osassa tapauksista, tähän kohtaan tulee localhost. Ja lopuksi password kohtaan
laitetaan käyttäjän salasana. Näiden tietojen perusteella jatketaan eteenpäin,
ja luodaan käyttäjät.
Koodilistaus 4.2: Luodaan "admin"- ja "guest"-käyttäjät |
mysql> GRANT ALL ON gentoo.* TO 'admin'@'localhost' IDENTIFIED BY 'password';
mysql> GRANT SELECT ON gentoo.* TO 'guest'@'localhost' IDENTIFIED BY 'password';
|
Nyt kun käyttäjät on luotu, testataan niiden toimivuus. Ensin kirjaudumme ulos
MySQL:stä, kirjoittamalla quit komentokehoitteeseen:
Koodilistaus 4.3: Poistutaan MySQL:stä |
mysql> quit
|
Näin olemme palanneet konsoliin. Nyt kun meillä on käyttäjät luotuna,
katsotaanpa mitä ne voivat tehdä.
Testataan käyttäjän oikeudet
Nyt yritämme kirjautua sisään ”guest”-käyttäjänä. Tällä hetkellä
”guest”-käyttäjällä on vain SELECT-oikeudet. Peritaatteessa tämä
tarkoittaa sitä, että käyttäjä voi etsiä tietoa, ei mitään muuta. Kirjaudu nyt
sisään ”guest”-käyttäjänä.
Koodilistaus 4.4: Kirjautuminen "guest"-käyttäjänä |
$ mysql -u guest -h localhost -p
Anna salasanasi:
Tervetuloa MySQL:een. Komennot päättyvät joko ; tai \g.
MySQL-yhteytesi tunnus on 6 palvelin versioon: 4.0.24-debug
Kirjoita 'help;' tai '\h' saadaksesi apua. Kirjoita '\c' tyhjentääksesi ruudun.
mysql>
|
Nyt meidän pitäisi testata käyttäjän rajoitteet. Vaihdetaanpa
”gentoo”-tietokantaan:
Koodilistaus 4.5: Vaihdetaan "gentoo"-tietokantaan |
mysql> USE gentoo;
Luetaan taulukoiden tietoja taulukon ja sarakkeiden nimien loppuunsaattamiseksi.
Voit poistaa tämän toimenpiteen ja saada nopeamman käynnistyksen valitsimella -A
Tietokanta vaihdettu
|
Yritetäänpä nyt tehdä jotain, mitä meidän ei oleteta tekevän. Koitetaan luoda
taulukko.
Koodilistaus 4.6: Yritys luoda taulukko "guest"-käyttäjänä |
mysql> CREATE TABLE test (test VARCHAR(20), foobar VARCHAR(2));
VIRHE 1044: Pääsy kielletty käyttäjältä: 'guest@localhost' to database 'gentoo'
|
Kuten huomaatte, tämä toiminto epäonnistuu, koska käyttäjällämme ei ole sopivia
oikeuksia. Myönsimme kuitenkin käyttäjälle yhden oikeuden, eli SELECT.
Koitetaanpa nyt sitä:
Koodilistaus 4.7: Yritys käyttää SELECT-komentoa |
mysql> SELECT * FROM developers;
+-------------+-----------------------+----------------+
| name | email | job |
+-------------+-----------------------+----------------+
| Joe Smith | joesmith@gentoo.org | toolchain |
| John Doe | johndoe@gentoo.org | portage |
| Chris White | chriswhite@gentoo.org | documentation |
| Sam Smith | samsmith@gentoo.org | amd64 |
| Jane Doe | NULL | Outsourced job |
+-------------+-----------------------+----------------+
5 riviä (0.00 sek)
|
Komento onnistui, ja näin näytimme vilaukselta, mitä käyttäjän oikeuksilla voi
tehdä. Me kuitenkin loimme myös ”admin”-käyttäjän. Tämä luotiin näyttääksemme,
että jopa kaikilla oikeuksilla varustetulla käyttäjällä on rajoitteensa.
Kirjauduppa nyt ulos MySQL:stä ja palaa tämän jälkeen sisään
”admin”-käyttäjänä.
Koodilistaus 4.8: Kirjautuminen "admin"-käyttäjänä |
mysql> quit
Bye
$ mysql -u admin -h localhost -p
Anna salasanasi:
Tervetuloa MySQL:een. Komennot päättyvät joko ; tai \g.
MySQL-yhteytesi tunnus on 7 palvelin versioon: 4.0.24-debug
Kirjoita 'help;' tai '\h' saadaksesi apua. Kirjoita '\c' tyhjentääksesi ruudun.
mysql>
|
Alkuun koitamme luoda uuden tietokannan ”admin”-käyttäjänä. Tällä
”admin”-käyttäjällä on samanlaiset oikeudet kuin MySQL-pääkäyttäjällä, ja se
voi tehdä aivan mitä tahansa muokauksia haluaa ”gentoo”-tietokannassa. Tämä
testaa käyttäjän pääsyn MySQL:n päätietokantaan. Muista, että annoimme sille
oikeudet vain tiettyyn tietokantaan.
Koodilistaus 4.9: Yritys luoda uusi tietokanta |
mysql> CREATE DATABASE gentoo2;
VIRHE 1044: Pääsy kielletty käyttäjältä: 'admin@localhost' to database 'gentoo2'
|
Ja tosiaankin, ”admin”-käyttäjä ei voi luoda tietokantoja
MySQL-päätietokantaan, huolimatta kaikista oikeuksista ”gentoo”-tietokannassa.
Silti voimme käyttää ”admin”-käyttäjää muokkaamaan ”gentoo”-tietokantaa,
niinkuin näytetään tässä esimerkki tiedonlisäyksessä.
Koodilistaus 4.10: "admin"-käyttäjän oikeudet "gentoo"-tietokannassa |
mysql> USE gentoo;
Luetaan taulukoiden tietoja taulukoiden ja sarakkeiden nimien loppuunsaattamiseksi.
Voit poistaa tämän toimenpiteen ja saada nopeamman käynnistyksen valitsimella -A
Database changed
mysql> INSERT INTO developers VALUES('Bob Simmons', 'bobsimmons@gentoo.org', 'python');
Kysely onnistui, 1 rivi vaikutusalueella (0.08 sek)
|
”Admin”-käyttäjä voi käyttää tietokantaa niinkuin haluaa. Kuitenkin joskus
tarvitsee päästä eroon käyttäjän oikeuksista. Tämä voi olla vaikka
ongelmallinen käyttäjä tai eläkkeelle jäänyt työntekijä. Katsotaanpa nyt kuinka
poistetaan käyttäjän oikeudet REVOKE-komennolla.
Poistetaan käyttäjäoikeuksia REVOKE-komennolla
REVOKE-komennon avulla voimme poistaa käyttäjän oikeudet. Voimme joko
poistaa kaikki oikeudet tai vain tietyt. Itseasiassa, sen muodossa on paljon
samaa kuin GRANT-komennon.
Koodilistaus 4.11: REVOKE Syntaksi |
REVOKE [privileges] ON database.* FROM '[user]'@'[host]';
|
Valitsimet on selitetty GRANT-komento kappaleessa. Tässä tapauksessa
aiomme kuitenkin poistaa kaikki oikeudet käyttäjältä. Sanotaanpa vaikka, että
huomasimme ”guest”-käyttäjän aiheuttavan turvallisuusongelmia. Päätämme
peruuttaa kaikki oikeudet. Kirjaudumme pääkäyttäjänä ja teemme tarvittavat
toimenpiteet.
Koodilistaus 4.12: Peruutetaan käyttäjän oikeudet |
mysql> REVOKE ALL ON gentoo.* FROM 'guest'@'localhost';
Kysely onnistui, 0 riviä vaikutusalueella (0.00 sek)
|
Huomaa:
Tässä tapauksessa käyttäjän oikeudet ovat yksinkertaiset, eli yhden tietokannan
oikeuksien peruuttaminen ei ole ongelma. Laajemmissa tapauksissa käyttäisit
todennäköisemmin *.* kuin nyt käytettyä gentoo.*.
|
Nyt kirjaudutaan ulos ja yritetään kirjautua ”guest”-käyttäjänä
sisään.
Koodilistaus 4.13: Yritetään "guest"-käyttäjän kirjautumista |
$ mysql -u guest -h localhost -p
Anna salasanasi:
Tervetuloa MySQL:een. Komennot päättyvät joko ; tai \g.
MySQL-yhteytesi tunnus on 4 palvelin versioon: 4.0.24-debug
Kirjoita 'help;' tai '\h' saadaksesi apua. Kirjoita '\c' tyhjentääksesi ruudun.
mysql>
|
Vaikka pystymme kirjautumaan sisään, niin pääsy
"gentoo"-tietokantaan on poissa.
Koodilistaus 4.14: Pääsy kielletty "guest"-käyttäjältä |
mysql> USE gentoo;
VIRHE 1044: Pääsy kielletty käyttäjältä: 'guest@localhost' to database 'gentoo'
|
Ja tällä käyttäjällä ei ole enään pääsyä ”gentoo”-tietokantaan. Mutta sinun
kannattaa huomata se, että tämä käyttäjä pystyy edelleen kirjautumaan sisään.
Tämä sen takia, että hänen tietonsa ovat edelleen MySQL:n päätietokannassa.
Katsotaanpa, kuinka käyttäjä poistetaan kokonaan DELETE-komennolla,
samoin myös MySQL:n ”user”-taulukosta.
Käyttäjien poistaminen DELETE-komennolla
MySQL:n ”user”-taulukkoon on listattu kaikki käyttäjät ja tiedot heistä.
Varmista, että olet kirjautuneena pääkäyttäjänä. Sitten jatka eteenpäin ja
siirry MySQL:n päätietokantaan.
Koodilistaus 4.15: Siirrytään käyttämään "mysql"-tietokantaa |
mysql> USE mysql;
Luetaan taulukoiden tietoja taulukon ja sarakkeiden nimien loppuunsaattamiseksi.
Voit poistaa tämän toimenpiteen ja saada nopeamman käynnistyksen valitsimella -A
Tietokantaa vaihdettu
mysql>
|
Katsotaanpa nyt, mitä taulukoita ”mysql”-tietokanta sisältää:
Koodilistaus 4.16: "mysql"-tietokannan taulukoiden listaus |
mysql> SHOW TABLES;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+-----------------+
6 riviä (0.00 sek)
|
”User”-taulukko on se mitä etsimme. Se kuitenkin sisältää 30 eri saraketta,
ja on näin ollen erittäin vaikea luettava. Tehdäksemme sen helpommin
luettavaksi, käyttämme kolmatta versiota SELECT-komennosta.
Sarakkeet joita haemme, ovat Host ja User.
Koodilistaus 4.17: Etsitään "guest"-käyttäjä "user"-taulukosta |
mysql> SELECT Host,User FROM user WHERE User = 'guest';
+-----------+-------+
| Host | User |
+-----------+-------+
| localhost | guest |
+-----------+-------+
1 riviä (0.00 sek)
|
Nyt kun saimme tiedot, voimme hankkiutua eroon ”guest”-käyttäjästä.
Tämä tehdään käyttäen DELETE-komentoa ja sen syntaksi
on nähtävillä tämän alapuolella.
Koodilistaus 4.18: DELETE Syntaksi |
DELETE FROM table WHERE field='value';
|
Saatoit huomata, että DELETE-komento on muodoltaan jonkin verran
samanlainen kuin SELECT. Tässä tapauksessa sarake on ”User”, ja arvo on
”guest”. Tämä poistaa tietueen ”user”-taulukosta, missä käyttäjä on ”guest”.
Tehdäänpä tämä nyt:
Koodilistaus 4.19: Poistetaan "guest"-käyttäjä |
mysql> DELETE FROM user WHERE User='guest';
Kysely onnistui, 1 rivi vaikutusalueella (0.07 sek)
mysql> FLUSH PRIVILEGES;
Kysely onnistui, 0 riviä vaikustusalueella (0.00 sek)
|
Se näytti toimivan hyvin. Kirjaudutaanpa nyt ulos ja koitetaan kirjautua
takaisin ”guest”-käyttäjänä
Koodilistaus 4.20: Yritys kirjautua sisään "guest"-käyttäjän |
mysql> quit
Bye
$ mysql -u guest -h localhost -p
Anna salasanasi:
VIRHE 1045: Pääsy kielletty käyttäjältä: 'guest@localhost' (Salasanaa käytetty: KYLLÄ)
|
Käyttäjämme on nyt poistettu onnistuneesti!
Lopuksi
Tämä ohje keskittyi pääsasiallisesti MySQL:n käyttöön komentoriviltä, mutta saatavilla
on vaihtoehtoja GUI-muodossa:
-
phpMyAdmin — Suosittu
php-pohjainen MySQL-hallintatyökalu.
-
mysqlnavigator
— QT-käyttöliittymä MySQL:een.
-
gmyclient — GNOME-
pohjainen MySQL asiakas-ohjelma.
-
knoda — KDE:n MySQL asiakas-ohjelma.
Tähän loppuu MySQL:n esitellyt ohje. Toivon, että tämä auttaa sinua paremmin
ymmärtämään MySQL:n perusteet ja saat tietokantasi asennettua. Lähetäthän
sähköpostia minulle, Chris White, jos sinulla on jotain
kommentoitavaa.
Tämän sivun sisältö ja suomennos kuuluvat
Creative Commons - Nimi mainittava-Sama lisenssi 2.5 -lisenssin alle.
Sivun sisältöä koskee myös
Gentoo Name and
Logo Usage Guidelines.
|