Autor: J. Karwowska
Po instalacji serwera MYSQL dostępne jest konto o nazwie root.
Domyślnie nie ma ono przypisanego hasła, aczkolwiek podczas procesu konfiguracji jest możliwość nadania go.
Użytkownik root ma największe uprawnienia dotyczące bazy danych, zarówno w zakresie administrowania bazami (tworzenie,
usuwanie, modyfikowanie), jak i w zakresie tworzenia kont użytkowników i nadawania im uprawnień.
Brak przypisanego hasła dla użytkownika root umożliwia zalogowanie się do bazy danych
bez hasła, tylko poprzez podanie nazwy użytkownika.
Aby nadać hasło użytkownikowi root, korzystamy z programu narzędziowego mysqladmin z komendą password.
W systemowej tabeli user bazy danych mysql możemy znaleźć użytkownika root wraz
z zaszyfrowanym hasłem i nazwą hosta.
Nasz użytkownik root nie posiada na razie hasła.
CREATE USER
nazwa_użytkownika;
Ćwiczenie 1
Utwórz nowego użytkownika o nazwie sosna.
CREATE USER
sosna;
Utworzony przez nas użytkownik będzie od razu widoczny w tabeli systemowej user.
W tabeli user jest widoczny w kolumnie host znak %. Oznacza on, że użytkownik ma
możliwość logowania się do dowolnego serwera bazy danych.
Aby utworzyć użytkownika z prawem
korzystania tylko z serwera umieszczonego pod adresem localhost, po nazwie użytkownika
podajemy znak @ i nazwę hosta.
CREATE USER nazwa_użytkownika@localhost;
Ćwiczenie 2
Utwórz nowego użytkownika o nazwie brzoza z dostępem tylko do serwera localhost.
CREATE USER brzoza@localhost;
Jeśli chcemy, aby użytkownik musiał używać hasła do zalogowania się do bazy danych, powinniśmy nieco rozbudować nasze
polecenie. Na jego końcu podajemy klauzulę IDENTIFIED BY, a po niej w apostrofach hasło do zalogowania.
CREATE user nazwa_użytkownika@localhost IDENTIFIED BY ‘hasło’;
Ćwiczenie 3
Utwórz nowego użytkownika
wierzba
z hasłem‘drzewa’.
CREATE user wierzba@localhost IDENTIFIED BY ‘drzewa’;
Hasło użytkownika
wierzba
będzieprzechowywane w zakodowanej postaci w tabeli systemowej USER w kolumnie password.
Samo utworzenie użytkownika nie oznacza przydzielenia mu uprawnień – na razie
użytkownik wierzba nie może połączyć się z bazą.
GRANT
rodzaj_uprawnienia
ONnazwa_bazy.nazwa_tabeli
TOnazwa_użytkownika
; Nadawanie użytkownikowi uprawnień odbywa się za pomocą komendy GRANT.
Jeśli użytkownik nie ma hasła, po komendzie GRANT podajemy rodzaj uprawnienia.
Słowo ALL oznacza wszystkie możliwe uprawnienia.
Następnie podajemy słowo ON, a po nim nazwę bazy danych lub tabeli.
Wyrażenie *.* oznacza dostęp do wszystkich baz i tabel.
Część przed znakiem kropki oznacza bazę danych, a po znaku kropki tabelę.
Za nimi, po słowie TO podajemy nazwę użytkownika wraz z nazwą hosta po znaku @.
Ćwiczenie
Nadaj użytkownikowi brzoza przywilej dostępu do wszystkich baz danych.
GRANT ALL ON *.* TO brzoza@localhost;
Po nadaniu użytkownikowi brzoza dostępu do
wszystkich baz danych za pomocą przywileju ALL może się on połączyć z dowolną bazą danych.
Aby nadać uprawnienia użytkownikowi, którego konto wymaga podania hasła,
należy polecenie GRANT wzbogacić o klauzulę IDENTIFIED BY, po której podajemy w
apostrofach, tak jak w przypadku tworzenia użytkownika, hasło logowania.
Ćwiczenie
Nadaj użytkownikowi wierzba, który posiada hasło przywilej dostępu do wszystkich baz danych.
GRANT ALL ON *.* TO wierzba@localhost IDENTIFIED BY ‘drzewa’;
Uprawnienia dla użytkownika mogą dotyczyć również tylko konkretnej bazy danych.
Wystarczy w tym przypadku po słowie ON, przed znakiem kropki, podać nazwę bazy danych.
Znak gwiazdki podany po znaku kropki oznacza wszystkie tabele w bazie.
GRANT ALL ON firma.* TO modrzew@localhost IDENTIFIED BY ‘las’;
Taki użytkownik będzie mógł wykonywać wszelkie operacje, ale tylko w ramach
podanej bazy.
Za odbieranie uprawnień użytkownikowi odpowiada polecenie REVOKE.
REVOKE ALL ON nazwa_bazy.nazwa_tabeli FROM nazwa_użytkownika@localhost;
Ćwiczenie
Użytkownik modrzew miał przywilej do
pobierania danych z tabeli towary bazy danych hurtownia. Spróbujmy odebrać mu
uprawnienia do bazy danych hurtownia.
REVOKE SELECT ON hurtownia.towary FROM modrzew@localhost;
Za pomocą opcji REVOKE OPTION podanej po typie przywileju możemy odebrać wszystkie uprawnienia, także uprawnienie do nadawania i odbierania uprawnień innym użytkownikom.
REVOKE ALL, GRANT OPTION FROM wierzba@localhost;
Tym razem użytkownik wierzba po
zalogowaniu nie ma nawet prawa połączyć się z żadną bazą danych.
Aby sprawdzić informacje na temat
uprawnień danego użytkownika, wystarczy wykonać polecenie rozpoczynające się od klauzuli SHOW GRANTS FOR, po której podajemy nazwę użytkownika.
SHOW GRANTS FOR nazwa_użytkownika;
Ćwiczenie
Odbierz uprawnienia użytkownikowi wierzba.
SHOW GRANTS FOR wierzba@localhost;
Użytkownik wierzba nie ma już żadnych uprawnień, co widać w tabeli:
Użytkownika usuwamy za pomocą klauzuli DROP USER, po której podajemy nazwę
użytkownika:
DROP USER nazwa_użytkownika;
W ten sposób usuwa się użytkownika, który nie miał przydzielonego konkretnego hosta.
Ćwiczenie
Usuń użytkownika sosna:
DROP USER sosna;
Czasem istnieje potrzeba dokonania zmiany nazwy użytkownika. Nie musimy wtedy
usuwać i ponownie tworzyć nowego
użytkownika, zwłaszcza jeśli ma on już przydzielone określone przywileje.
Zmiany nazwy użytkownika dokonujemy za pomocą klauzuli RENAME USER, po której podajemy starą nazwę użytkownika, słowo TO i nową nazwę użytkownika.
RENAME USER