 
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.