# Käyttäjien luominen MySQL:ssä

Uuden käyttäjän luomiseksi MySQL:ssä tarvitset riittävät järjestelmänvalvojan oikeudet tai superkäyttäjän oikeudet, joiden avulla voit luoda käyttäjätilejä ja hallita käyttöoikeuksia sekä käyttää kyseistä tietokantaa. Sinun on myös tiedettävä, minkälaista käyttöoikeutta uusi käyttäjä tarvitsee: lukuoikeudet, kirjoitusoikeudet vai jopa järjestelmänvalvojan oikeudet.

## MySQL:n `CREATE USER` -komennon käyttö

Kun asennat tietokannan hallintajärjestelmän, MySQL luo automaattisesti **pääkäyttäjätilin**. Tämä tili antaa sinulle kattavan hallinnan tietokannoistasi, taulukoistasi ja käyttäjistäsi, mikä mahdollistaa tehokkaan hallinnoinnin. Jos tarvitset apua asennusprosessissa, MySQL-oppaastamme löydät kaikki tarvittavat tiedot.

Juuritililläsi voit luoda lisää käyttäjätilejä tai uusia MySQL-käyttäjiä ja määrittää heille käyttöoikeudet. Ubuntu-järjestelmissä, joissa on MySQL 5.7 tai uudempi versio, MySQL-pääkäyttäjä on oletusarvoisesti määritetty todentamaan itsensä `auth_socket` salasanan sijaan. Tämä tarkoittaa, että jos MySQL-asiakasta kutsuvan järjestelmän käyttäjän nimi eroaa komennossa määritetyn MySQL-käyttäjän nimestä, sinun on lisättävä komennon eteen `sudo`, jotta pääset pääkäyttäjätilillesi:

```bash
$ sudo mysql
```

Voit luoda uuden käyttäjän MySQL:ssä komennolla `CREATE USER`. Sen avulla voit luoda käyttäjän, jolla on tietty käyttäjänimi ja salasana:

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

Korvaa `username` haluamallasi käyttäjänimellä. 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äyttämään tietokantaa vain paikalliselta Ubuntu-palvelimelta, voit kirjoittaa `localhost`.

Kun valitset **todennuslaajennuksen**, sinulla on useita vaihtoehtoja. Laajennus `auth_socket` tarjoaa korkean turvallisuustason vaatimalla käyttäjiltä salasanan syöttämistä tietokantaan pääsemiseksi. Se kuitenkin rajoittaa etäyhteyksiä, mikä voi vaatia enemmän työtä ulkoisilta ohjelmilta MySQL:n kanssa vuorovaikutuksessa. Vaihtoehtoisesti voit jättää komennon osan `WITH authentication_plugin` pois ja todentaa käyttäjät MySQL:n vakiolaajennuksella `caching_sha2_password`. Komento näyttäisi tällöin seuraavalta:

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

Kun olet luonut uuden käyttäjän, sinun on määritettävä hänelle käyttöoikeudet.

## Kuinka määrittää oikeudet käyttäjille MySQL:ssä

Käyttäjäoikeuksien luominen ja hallinta ovat olennaisia tietoturvan ylläpitämiseksi MySQL:ssä. Yleinen komento käyttäjäoikeuksien määrittämiseen on:

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

Arvo `PRIVILEGE` määrittää, mitä toimintoja käyttäjä voi suorittaa määritellyssä tietokannassa ja taulukossa. Voit korvata tämän arvon muun muassa seuraavilla komennoilla:

- `CREATE`: Antaa käyttäjille mahdollisuuden luoda tietokannan tai taulukon
- `SELECT`: Antaa käyttäjille mahdollisuuden hakea tietoja
- `INSERT`: Antaa käyttäjille mahdollisuuden lisätä uusia merkintöjä taulukoihin
- `UPDATE`: Antaa käyttäjille mahdollisuuden muokata taulukoiden olemassa olevia merkintöjä
- `DELETE`: Antaa käyttäjille mahdollisuuden poistaa taulukon merkintöjä
- `DROP`: Antaa käyttäjille mahdollisuuden poistaa kokonaisia tietokantataulukoita

Voit myös myöntää uusille käyttäjille useita oikeuksia kerralla. Tällöin oikeudet on erotettava toisistaan pilkulla:

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

**Kaikkien tietokantojen tai taulukoiden käyttöoikeudet** voidaan myöntää myös yhdellä komennolla kirjoittamalla `*` yksittäisten tietokantojen ja taulukoiden nimien sijaan. Esimerkiksi seuraava komento antaa käyttäjälle oikeuden hakea tietoja (`SELECT`), lisätä uusia merkintöjä (`INSERT`) ja muuttaa olemassa olevia merkintöjä (`UPDATE`) kaikissa tietokannoissa ja taulukoissa.

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

Kun olet suorittanut `CREATE USER` tai `GRANT` komentoa MySQL:ssä, voit käyttää `FLUSH PRIVILEGES` komentoa tietokannan päivittämiseen. Tämä lataa valtuutustaulukot uudelleen ja varmistaa, että uudet valtuutukset tulevat voimaan:

```bash
mysql> FLUSH PRIVILEGES;
```

On kuitenkin tärkeää myöntää käyttäjille vain tarvitsemansa käyttöoikeudet. Jos annat käyttäjälle täyden hallintaoikeuden, se voi aiheuttaa **suuren turvallisuusriskin**.

## Kuinka peruuttaa käyttäjien käyttöoikeudet MySQL:ssä

Komentoa `REVOKE` käytetään käyttäjäoikeuksien poistamiseen MySQL:ssä. Syntaksi on samanlainen kuin komennolla `GRANT`. Tällä komennolla on kuitenkin käytettävä `FROM` `TO` sijaan:

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

Voit näyttää käyttäjän nykyiset käyttöoikeudet komennolla `SHOW GRANTS`:

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

Voit poistaa käyttäjän `DROP` -komennolla:

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

Ole erittäin varovainen poistaessasi käyttäjiä, etenkin käyttäjiä, joilla on järjestelmänvalvojan oikeudet. Varmista, että poistat vain käyttäjiä, jotka todella haluat poistaa, jotta vältät tahattoman tietojen menetyksen.

Kun olet luonut uudet MySQL-käyttäjät ja myöntänyt heille oikeudet, voit poistua MySQL-asiakasohjelmasta:

```bash
mysql> exit
```


This is a markdown version of: [https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/mysql-luo-kaeyttaejae/](https://www.ionos.com/fi-fi/digitalguide/verkkosivustot/verkkosivujen-kehittaeminen/mysql-luo-kaeyttaejae/) for AI/LLM consumption.