Administracja bazami danych
V Podstawowe ustawienia użytkowników w
bazie danych
1. Wyświetlanie listy użytkowników
Jeśli zalogujesz się do bazy danych jako administrator (np. właśnie jako użytkownik
„root”), to będziesz miał możliwość wylistowania wszystkich użytkowników. Można to
zrobić przy pomocy polecenia:
select * from mysql.user;
Jak jednak widać, wyświetla ono dość dużo informacji, które nie wyglądają zbyt
czytelnie, dlatego, polecam zacząć od wypisania listy kolumn w tabeli „user” bazy
„mysql” za pomocą polecenia:
desc mysql.user;
a dopiero teraz wypisanie tylko tych informacji, które poszukujemy, przykładowo jeśli
chcemy wpisać listę nazw użytkowników oraz ich hasła, to możemy skorzystać z
polecenia:
select user, password from mysql.user;
Hasło będzie oczywiście wyświetlone w postaci zaszyfrowanej. Oprócz tych informacji,
możemy też tutaj sprawdzić przede wszystkim konkretne uprawnienia, jakie posiada
każdy z użytkowników.
2. Tworzenie nowego użytkownika
Jednym z przywilejów administratora jest możliwość tworzenia „kont” nowym
użytkownikom. Możemy to wykonać za pomocą polecenia:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
gdzie oczywiście tekst “newuser” zastępujemy nazwą nowego użytkownika, a pole
“password” hasłem dla niego. Po tym możesz zalogować się jako nowy użytkownik w
wierszu poleceń za pomocą polecenia:
mysql.exe –u newuser –p;
a następnie podając jego hasło. Jednak okazuje się, że jeśli uda się zalogować jako
nowemu użytkownikowi, to nie ma on żadnych praw, dlatego tym musimy zająć się w
następnej kolejności.
3. Nadawanie praw użytkownikom
Kolejnym z przywilejów administratora jest możliwość nadawania praw dla
użytkowników. Będąc zalogowany jako administrator, najprościej jest nadać
użytkownikowi wszystkie prawa za pomocą polecenia:
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost';
I od tej chwili użytkownik ten będzie posiadał prawa równoznaczne z naszymi. Będzie
mógł też… odebrać nam różne prawa, dlatego warto się zastanowić, czy na pewno
chcemy przekazać użytkownikom wszystkie prawa. Dlatego możemy zmodyfikować to
polecenie, żeby móc nadać tylko określone przywileje dla użytkownika oraz nawet dla
określonej bazy danych, czy tabeli. Przykładowo, poniższe polecenie:
GRANT SELECT ON szkola.uczniowie TO 'newuser'@'localhost';
Umożliwi użytkownikowi o nazwie „newuser” na wylistowywanie danych z tabeli
„uczniowie” w bazie danych „szkola”. Możemy oprócz SELECT, poniżej lista
najważniejszych przywilejów:
• ALL PRIVILEGES - dostęp do wszystkich poniższych opcji w zaznaczonych bazach
danych
• CREATE – tworzenie baz danych oraz tabel
• DROP – usuwanie baz danych oraz tabel
• DELETE – usuwanie rekordów z tabel
• INSERT – dodawanie rekordów do tabel
• SELECT – wyświetlanie rekordów z tabel
• UPDATE – uaktualnianie danych w tabelach
• GRANT OPTION – nadawanie i odbieranie praw użytkownikom.
Po nadaniu wszystkich przywilejów, pamiętaj jeszcze o przeprowadzeniu odświeżenia
przywilejów w bazie danych za pomocą polecenia:
FLUSH PRIVILEGES;
4. Odbieranie praw użytkownikom
Skoro możemy nadawać prawa użytkownikom, to łatwo się domyślić, ze istnieje też
opcja służąca do odbierania im praw. Poniższym poleceniem odbierzemy
użytkownikowi „newuser” wszystkie prawa:
REVOKE ALL PRIVILEGES ON *.* FROM 'newuser'@'localhost';
Jednak zwykle nie będziemy chcieli robić aż tak drastycznych zmian, dlatego można je
oczywiście dostosować do własnych potrzeb i odebrać użytkownikowi możliwość
wykonywania jakiś konkretnych czynności. Przykładowo:
REVOKE SELECT, INSERT ON szkola.* FROM 'newuser'@'localhost';
Usunie wcześniej nadaną możliwość wypisywania i dodawania rekordów w bazie
danych „szkola”. Po zakończeniu odbierania uprawnień dla użytkowników, warto
ponownie przeładować uprawnienia przy pomocy polecenia:
FLUSH PRIVILEGES;
6. Usunięcie użytkownika
Jeśli dany użytkownik nie jest już nam potrzebny, to najbezpieczniej jest go po prostu go
usunąć z naszej bazy danych. Możemy to zrobić za pomocą polecenia:
DROP USER 'newuser'@'localhost';
Po wylistowaniu dostępnych użytkowników, nie będzie już go na liście.
7. Zmiana hasła administratora oraz innym użytkownikom
Jak wiadomo, administrator początkowo nie posiada ustawianego żadnego hasło. Jest to
dopuszczalne jeśli wykorzystujemy serwer tylko do nauki w domowych warunkach,
jednak w innych wypadkach nie jest to zbytnio bezpieczne. Możemy to oczywiście
zmienić, korzystając z polecenia:
SET PASSWORD FOR root@localhost=PASSWORD('haslo');
Oczywiście w miejsce słowa “root” możemy wpisać nazwę innego użytkownika, a w
miejscu słowa “haslo” dowolnie inne hasło.
8. Sprawdzenie aktualnie zalogowanego użytkownika
Przy częstym przelogowywaniu i zmianie przywilejów, może się zdarzyć tak, zę nie
będziesz do końca pewien jako jaki użytkownik jesteś aktualnie zalogowany. Na
szczęście można to łatwo sprawdzić przy pomocy polecenia korzystającego z funkcji
CURRENT_USER:
SELECT CURRENT_USER();
9. Dodatkowe informacje
• Sprawdzanie użytkowników w MySQL:
http://alvinalexander.com/blog/post/mysql/show-users-i-ve-created-in-mysql-
database
• Nadawanie przywilejów użytkownikom:
http://dev.mysql.com/doc/refman/5.1/en/grant.html
• Nadawanie i odbieranie przywilejów:
https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-
and-grant-permissions-in-mysql
• Restartowanie hasła roota:
http://www.devside.net/wamp-server/resetting-
mysql-root-password
Zadania:
1. Wypisz listę wszystkich użytkowników w MySQL.
2. Utwórz nowego użytkownika, nadaj mu przywileje do wypisywania, dodawania oraz
uaktualniana rekordów w którejś z Twoich baz danych. Następnie przelguj się na jego
konto i sprawdź, czy możesz wykonać te polecenia oraz czy inne polecenia (np.
utworzenie nowej tabeli) będą rzeczywiście niedostępne.
3. Zabierz użytkownikowi nadane wcześniej uprawnienia, sprawdź, czy polecenie
zadziałało. Następnie usuń stworzonego użytkownika.