15.2.2015
Tietokannat: Valtuudet
Valtuudet
- Tavoitteena tietojen suojaus
- Tiedot voidaan suojata käyttäjä- ja taulukohtaisesti
- Käyttäjiä
luodaan useimmissa tuotteissa CREATE USER -käskyllä ja salasana
määritetään samalla, esim. CREATE USER jouni IDENTIFIED BY jh1
- Joissain tuotteissa salasana luodaan CREATE PASSWORD - käskyllä
- Käyttöoikeudet
voidaan niputtaa nk. rooliin (voi olla myös yksittäinen henkilö) ja
luoda CREATE ROLE -käskyllä, esim. CREATE ROLE opettaja
- Valtuudet myönnetään GRANT-käskyllä, esim. GRANT SELECT ON kirjat TO jouni tai kaikki oikeudet GRANT ALL PRIVILEGES -käskyllä
- Valtuudet poistetaan REVOKE-käskyllä ja käyttäjä DROP USER tai DROP ROLE-käskyllä
Valtuudet ja MySQL
MySQL-käyttäjät
- MySQL asennuksen jälkeen ainoastaan
pääkäyttäjällä on oikeus luoda ja poistaa
tietokantoja ja niiden käyttäjiä sekä
määritellä eri tietokantojen käyttäjille
käyttöoikeuksia.
- MySQL-käyttäjät ovat oikeuksineen tallennettuna mysql-nimisen tietokannan user-taulussa:
mysql> SELECT * FROM mysql.user;
...
... Näkee kaikki kentät, paljon informaatiota
...
mysql> SELECT user,host,password FROM mysql.user;
+------------------+------------------+-------------------------------------------+
| user | host | password |
+------------------+------------------+-------------------------------------------+
| root | localhost |*D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 |
| root | testi-VirtualBox |*D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 |
| root | 127.0.0.1 |*D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 |
| root | ::1 |*D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 |
| | localhost | |
| | testi-VirtualBox | |
| debian-sys-maint | localhost | *D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 |
+----------+------------+-------------------------------------------+
7 rows in set (0.01 sec)
MySQL-pääkäyttäjien luominen
Uusia käyttäjiä voi luoda (ja valtuuksia muuttaa) vain sellaiset
käyttäjät, jotka ovat luotu "WITH GRANT OPTION" eli esim. seuraavalla
tavalla:
mysql -u root -p
Enter password:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tkuser'@'localhost'
IDENTIFIED BY 'sala' WITH GRANT OPTION;
FLUSH PRIVILEGES;
mysql> exit
- Komentosarjan jälkeen MySQL-käyttäjä
tkuser on myös oikeutettu luomaan tietokantoja ja muita
käyttäjiä.
- Muista AINA oikeuksien muuutosten jälkeen: FLUSH PRIVILEGES;
Pitkät moniriviset mysql-monitorille annettavat komennot (mm.
SQL-kyselyt) voidaan kirjoittaa ja halutessa tallentaa millä
tahansa tekstieditorilla ja kopioida mysql-ohjelmaan esim.
leikepöydän kautta.
MySQL-käyttäjien lisääminen : 3 tapaa
http://www.databasef1.com/tutorial/mysql-create-user.html
1) CREATE USER
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
esim:
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'pass1';
Edellisen komennon seurauksena kaikki oikeudet N, jotta ao. käyttäjä voisi tehdäkin jotakin laitetaan esim:
GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO 'user1'@'localhost';
Tai kaikki esim. oikeudet:
GRANT ALL ON *.* TO 'user1'@'localhost';
2) GRANT
Käyttäjä voidaan lisätä myös suoraan GRANT-lauseella esim.
GRANT ALL ON *.* TO 'user2'@'localhost' IDENTIFIED BY 'pass1';
3) INSERT INTO
INSERT INTO user (Host,User,Password)
VALUES('localhost','user3',PASSWORD('pass3'));
Samalla voitaisiin antaa myös joitakin oikeuksia:
INSERT INTO user (Host,User,Password,Select_priv,Insert_priv)
VALUES('localhost','user4',PASSWORD('pass3'),'Y','Y');
MySQL-salasanan muuttaminen
1) Kirjaudu halumallasi MySQL-tunnuksella
2)
set password = password("yournewpassword");
Salasanan vaihto onnistuu myös SQL/Update-lauseella
UPDATE user SET password=PASSWORD('newpassword') WHERE user='root';
Huom: Kaikkien root-käyttäjien (jokainen käyttöpaikka) salasana vaihtuu!
MySQL-käyttöpaikat
MySQL-käyttäjätunnus on oikeastaan käyttäjätunnuksen (user) ja
käyttöpaikan (host) yhdistelmä. Käyttäjän oikeudet määräytyy sen
mukaan, millä käyttäjätunnuksella on kirjauduttu ja mistä
käyttöpaikasta (host).
mysql> SELECT user,host,password FROM mysql.user;
+----------+------------+-------------------------------------------+
| user | host | password |
+----------+------------+-------------------------------------------+
| root | localhost | |
| tkuser | localhost | *D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 |
| iproot | 192.168.1.1| *D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 |
| remoroot | % | *D36F00B81C7E8087ADABF47F2FBC71E7F7B30561 |
+----------+------------+-------------------------------------------+
3 rows in set (0.00 sec)
%-merkki host-sarakkeessa tarkoittaa mitä tahansa käyttöpaikkaa. Edellä nähty remoroot voitaisiin luodaq esim. komentamalla:
GRANT ALL PRIVILEGES ON *.* TO 'remoroot'@'%' IDENTIFIED BY 'sala' WITH
GRANT OPTION;
Osa materiaalista on muokattu Jouni Huotarin materiaalista.