Uuden käyttäjän luo­mi­sek­si MySQL:ssä tarvitset riittävät jär­jes­tel­män­val­vo­jan oikeudet tai su­per­käyt­tä­jän oikeudet, joiden avulla voit luoda käyt­tä­jä­ti­le­jä ja hallita käyt­tö­oi­keuk­sia sekä käyttää kyseistä tie­to­kan­taa. Sinun on myös tie­det­tä­vä, min­kä­lais­ta käyt­tö­oi­keut­ta uusi käyttäjä tarvitsee: lu­kuoi­keu­det, kir­joi­tusoi­keu­det vai jopa jär­jes­tel­män­val­vo­jan oikeudet.

MySQL:n CREATE USER -komennon käyttö

Kun asennat tie­to­kan­nan hal­lin­ta­jär­jes­tel­män, MySQL luo au­to­maat­ti­ses­ti pää­käyt­tä­jä­ti­lin. Tämä tili antaa sinulle kattavan hallinnan tie­to­kan­nois­ta­si, tau­lu­kois­ta­si ja käyt­tä­jis­tä­si, mikä mah­dol­lis­taa tehokkaan hal­lin­noin­nin. Jos tarvitset apua asen­nuspro­ses­sis­sa, MySQL-op­paas­tam­me löydät kaikki tar­vit­ta­vat tiedot.

Juu­ri­ti­lil­lä­si voit luoda lisää käyt­tä­jä­ti­le­jä tai uusia MySQL-käyttäjiä ja määrittää heille käyt­tö­oi­keu­det. Ubuntu-jär­jes­tel­mis­sä, joissa on MySQL 5.7 tai uudempi versio, MySQL-pää­käyt­tä­jä on ole­tusar­voi­ses­ti mää­ri­tet­ty to­den­ta­maan itsensä auth_socket salasanan sijaan. Tämä tar­koit­taa, että jos MySQL-asiakasta kutsuvan jär­jes­tel­män käyttäjän nimi eroaa ko­men­nos­sa mää­ri­te­tyn MySQL-käyttäjän nimestä, sinun on lisättävä komennon eteen sudo, jotta pääset pää­käyt­tä­jä­ti­lil­le­si:

$ sudo mysql
bash

Voit luoda uuden käyttäjän MySQL:ssä ko­men­nol­la CREATE USER. Sen avulla voit luoda käyttäjän, jolla on tietty käyt­tä­jä­ni­mi ja salasana:

mysql> CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
bash

Korvaa username ha­lua­mal­la­si käyt­tä­jä­ni­mel­lä. Kirjoita kohtaan host sen isännän nimi, josta uusi käyttäjä voi muodostaa yhteyden. Jos käyttäjän pitäisi pystyä käyt­tä­mään tie­to­kan­taa vain pai­kal­li­sel­ta Ubuntu-pal­ve­li­mel­ta, voit kir­joit­taa localhost.

Kun valitset to­den­nus­laa­jen­nuk­sen, sinulla on useita vaih­toeh­to­ja. Laajennus auth_socket tarjoaa korkean tur­val­li­suus­ta­son vaa­ti­mal­la käyt­tä­jil­tä salasanan syöt­tä­mis­tä tie­to­kan­taan pää­se­mi­sek­si. Se kuitenkin rajoittaa etäyh­teyk­siä, mikä voi vaatia enemmän työtä ul­koi­sil­ta oh­jel­mil­ta MySQL:n kanssa vuo­ro­vai­ku­tuk­ses­sa. Vaih­toeh­toi­ses­ti voit jättää komennon osan WITH authentication_plugin pois ja todentaa käyttäjät MySQL:n va­kio­laa­jen­nuk­sel­la caching_sha2_password. Komento näyttäisi tällöin seu­raa­val­ta:

mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
bash

Kun olet luonut uuden käyttäjän, sinun on mää­ri­tet­tä­vä hänelle käyt­tö­oi­keu­det.

Kuinka määrittää oikeudet käyt­tä­jil­le MySQL:ssä

Käyt­tä­jä­oi­keuk­sien luominen ja hallinta ovat olen­nai­sia tie­to­tur­van yl­lä­pi­tä­mi­sek­si MySQL:ssä. Yleinen komento käyt­tä­jä­oi­keuk­sien mää­rit­tä­mi­seen on:

mysql> GRANT PRIVILEGE ON database.table TO 'username'@'host';
bash

Arvo PRIVILEGE määrittää, mitä toi­min­to­ja käyttäjä voi suorittaa mää­ri­tel­lys­sä tie­to­kan­nas­sa ja tau­lu­kos­sa. Voit korvata tämän arvon muun muassa seu­raa­vil­la ko­men­noil­la:

  • CREATE: Antaa käyt­tä­jil­le mah­dol­li­suu­den luoda tie­to­kan­nan tai taulukon
  • SELECT: Antaa käyt­tä­jil­le mah­dol­li­suu­den hakea tietoja
  • INSERT: Antaa käyt­tä­jil­le mah­dol­li­suu­den lisätä uusia mer­kin­tö­jä tau­lu­koi­hin
  • UPDATE: Antaa käyt­tä­jil­le mah­dol­li­suu­den muokata tau­lu­koi­den olemassa olevia mer­kin­tö­jä
  • DELETE: Antaa käyt­tä­jil­le mah­dol­li­suu­den poistaa taulukon mer­kin­tö­jä
  • DROP: Antaa käyt­tä­jil­le mah­dol­li­suu­den poistaa ko­ko­nai­sia tie­to­kan­ta­tau­lu­koi­ta

Voit myös myöntää uusille käyt­tä­jil­le useita oikeuksia kerralla. Tällöin oikeudet on ero­tet­ta­va toi­sis­taan pilkulla:

mysql> GRANT SELECT, INSERT, UPDATE ON database.table TO 'username'@'host';
bash

Kaikkien tie­to­kan­to­jen tai tau­lu­koi­den käyt­tö­oi­keu­det voidaan myöntää myös yhdellä ko­men­nol­la kir­joit­ta­mal­la * yk­sit­täis­ten tie­to­kan­to­jen ja tau­lu­koi­den nimien sijaan. Esi­mer­kik­si seuraava komento antaa käyt­tä­jäl­le oikeuden hakea tietoja (SELECT), lisätä uusia mer­kin­tö­jä (INSERT) ja muuttaa olemassa olevia mer­kin­tö­jä (UPDATE) kaikissa tie­to­kan­nois­sa ja tau­lu­kois­sa.

mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO 'username'@'host';
bash

Kun olet suo­rit­ta­nut CREATE USER tai GRANT komentoa MySQL:ssä, voit käyttää FLUSH PRIVILEGES komentoa tie­to­kan­nan päi­vit­tä­mi­seen. Tämä lataa val­tuu­tus­tau­lu­kot uudelleen ja varmistaa, että uudet val­tuu­tuk­set tulevat voimaan:

mysql> FLUSH PRIVILEGES;
bash

On kuitenkin tärkeää myöntää käyt­tä­jil­le vain tar­vit­se­man­sa käyt­tö­oi­keu­det. Jos annat käyt­tä­jäl­le täyden hal­lin­ta­oi­keu­den, se voi aiheuttaa suuren tur­val­li­suus­ris­kin.

Kuinka peruuttaa käyt­tä­jien käyt­tö­oi­keu­det MySQL:ssä

Komentoa REVOKE käytetään käyt­tä­jä­oi­keuk­sien pois­ta­mi­seen MySQL:ssä. Syntaksi on sa­man­lai­nen kuin ko­men­nol­la GRANT. Tällä ko­men­nol­la on kuitenkin käy­tet­tä­vä FROM TO sijaan:

mysql> REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';
bash

Voit näyttää käyttäjän nykyiset käyt­tö­oi­keu­det ko­men­nol­la SHOW GRANTS:

mysql> SHOW GRANTS FOR 'username'@'host';
bash

Voit poistaa käyttäjän DROP -ko­men­nol­la:

mysql> DROP USER 'username'@'localhost';
bash

Ole erittäin va­ro­vai­nen pois­taes­sa­si käyttäjiä, etenkin käyttäjiä, joilla on jär­jes­tel­män­val­vo­jan oikeudet. Varmista, että poistat vain käyttäjiä, jotka todella haluat poistaa, jotta vältät ta­hat­to­man tietojen me­ne­tyk­sen.

Kun olet luonut uudet MySQL-käyttäjät ja myöntänyt heille oikeudet, voit poistua MySQL-asia­kas­oh­jel­mas­ta:

mysql> exit
bash
Siirry pää­va­lik­koon