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ędzie przechowywane 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 ON nazwa_bazy.nazwa_tabeli TO nazwa_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;
Użytkownika, który miał przydzielony konkretny host usuwamy za pomocą klauzuli DROP USER, po której podajemy nazwę użytkownika wraz z nazwą hosta: DROP USER nazwa_użytkownika@localhost; W ten sposób usuwa się użytkownika,. Ćwiczenie Usuń użytkownika wierzba: DROP USER wierzba@localhost
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 stara_nazwa_użytkownika TU nowa_nazwa_użytkownika;