Gentoo Logo

MySQL-aloitusopas

Sisällysluettelo:

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

(Katso saatavilla olevat USE-asetukset)
# emerge --pretend --verbose mysql
(Asenna 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

(Korvaa [versio] tuoreimman asennuksen versioluvulla.)
# 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:
   
(Huomaa seuraavat 3 riviä)
   /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.

(Jotkut tietyt MySQL informaatiot joita ei ole ebuildissa, on poistettu, jotta tämä
ohje pysyisi mahdollisimman johdonmukaisena)

   * 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 ]
(Laita ”new-password”-kohtaan haluamasi salasana)
# /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)
(Jos et tiedä missä järjestyksessä sarakkeet ovat taulukossa tai haluat lisätä vajaan tietueen)
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

(Valitse kaikki tiedot taulukosta)
SELECT * FROM table;
(Valitse tietyt tiedot taulukosta)
SELECT * FROM table WHERE field=value;
(Valitse tietyt sarakkeet taulukosta)
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

(admin)
mysql> GRANT ALL ON gentoo.* TO 'admin'@'localhost' IDENTIFIED BY 'password';
(guest)
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)
(FLUSH PRIVILEGES:tä tarvitaan päivitettäessä käyttäjien oikeuksia)
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.



Tulostettava muoto

Tämä sivu on viimeksi päivitetty 12. syyskuuta 2006

Tätä käännöstä ei enää ylläpidetä

Tiivistelmä: Tämä dokumentti auttaa sen lukijoita MySQL:n käyttöönotossa ja käytössä.

Chris White
Tekijä

Shyam Mani
Toimittaja

Xavier Neys
Toimittaja

rogk
Kääntäjä

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.