Wprowadzenie
MySQL jest jednym z najczęściej wybieranych systemów open-source do zarządzania relacyjnymi bazami danych na świecie, dzięki któremu możesz tworzyć bazy danych, oraz zapisywać i odczytywać dane w nich zachowane.
Po zainstalowaniu MySQL na serwerze, tworzone jest konto administratora, które posiada pełną kontrolę nad wszystkimi stworzonymi w systemie bazami danych. Ze względów bezpieczeństwa zalecamy utworzenie różnego typu użytkowników MySQL o odrębnych uprawnieniach w celu ograniczenia dostępu i uniknięcia niepożądanych zmian w bazach danych.
W niniejszym poradniku przedstawimy instalację MySQL na serwerze, o ile nie został wcześniej zainstalowany, oraz jak utworzyć nowych użytkowników MySQL i jak nadać im uprawnienia dla baz danych lub poszczególnych tabel za pomocą komend grant/revoke.
Połącz się ze swoim serwerem przez SSH. Jeśli jeszcze tego nie zrobiłeś, zapoznaj się z naszym poradnikiem na temat bezpiecznego połączenia przez protokół SSH. W przypadku serwera lokalnego przejdź do następnego kroku i otwórz terminal na swoim serwerze.
Instalacja MySQL
Jeśli nie zainstalowałeś jeszcze MySQL na swoim serwerze, skorzystaj z instrukcji instalacji i zabezpieczenia go na Linux Ubuntu 18.04. Jeśli jednak już posiadasz MySQL na serwerze, przejdź do kolejnego punktu niniejszego poradnika.
Aby upewnić się, że pobierzesz najnowszą wersję MySQL, w pierwszej kolejności zaktualizuj repozytoria swojej dystrybucji Linux. Jeśli już wcześniej wykonałeś tę komendę, przejdź do następnego kroku.
Rozpocznij instalację MySQL:
$ sudo apt install mysql-server
Sprawdź wersję MySQL w celu weryfikacji poprawności instalacji:
Jeśli proces przebiegł bez problemów, zostanie wyświetlona wersja zainstalowanego MySQL.
Zabezpiecz MySQL za pomocą skryptu zawartego w MySQL, który zwiększa bezpieczeństwo i ogranicza dostęp do Twoich baz danych:
$ sudo mysql_secure_installation
W tym momencie instalator przeprowadzi Cię przez proces konfiguracyjny poziomu bezpieczeństwa MySQL.
W pierwszej kolejności zostaniesz zapytany czy chcesz wprowadzić system weryfikacji ustawianego hasła. Jeśli go uruchomisz, w czasie ustawiania hasła użytkownika sprawdzana będzie jego kompatybilność z podstawowymi zasadami bezpieczeństwa. Jeśli hasło ich nie spełni, wyświetlony zostanie błąd.
Następnie uzyskasz możliwość zmiany hasła root na wybrane przez siebie. Jeśli aktywowałeś system weryfikacji hasła, będzie ono musiało spełniać kryteria bezpiecznego hasła.
Na koniec możesz wybrać czy chcesz usunąć anonimowych użytkowników, testowe bazy danych oraz czy chcesz wyłączyć zdalne logowanie dla użytkownika root: zalecamy zaakceptowanie tych zmian ze względów bezpieczeństwa.
Potwierdź aktualizację tabeli uprawnień w celu zastosowania nowych kryteriów bezpieczeństwa.
Sprawdź poprawne działanie MySQL za pomocą poniższej komendy:
Jeśli MySQL został poprawnie zainstalowany i skonfigurowany, zostanie otwarty shell MySQL.
Wyjdź z konsoli MySQL za pomocą komendy:
Tworzenie nowego użytkownika MySQL
Jak stworzyć nowego użytkownika MySQL?
Tworzenie użytkowników może zostać przeprowadzone jedynie z poziomu shell MySQL.
Zaloguj się za pomocą komendy:
$ mysql
Stwórz nowego użytkownika wprowadzając:
> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
Uwaga: zastąp 'username' i 'password' kolejno nazwą użytkownika i jego nowym hasłem dostępowym do serwera MySQL.
Nadawanie i usuwanie uprawnień w MySQL
Utworzony użytkownik MySQL nie ma żadnych uprawnień dostępowych i nie może modyfikować baz danych. Uprawnienia nadawane są dla poszczególnych baz danych oraz tabel.
Komenda wygląda jak poniżej:
> GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
Uwaga: pierwsza gwiazdka(*) jest polem przeznaczonym na bazę danych, druga natomiast oznacza tabele w bazie danych.
W przypadku komendy poniżej dostęp jest nadawany dla wszystkich baz danych oraz powiązanych z nimi tabel.
Jeśli komenda zawierałaby „db_users. *”, pełny dostęp jest nadawany jedynie do bazy danych 'db_user'. Jeśli natomiast wprowadzimy „db_name.users”, dostęp zostanie nadany jedynie do tabeli 'users' bazy danych 'db_users'.
Po wykonaniu operacji niezbędne jest przeprowadzenie wewnętrznej aktualizacji uprawnień. Możesz wykonać ją za pomocą komendy:
> FLUSH PRIVILEGES;
Dzięki poprzednim instrukcjom, nowy użytkownik uzyskał pełne uprawnienia. Może jednak również zostać ustalony rodzaj uprawnień użytkownika.
- ALL PRIVILEGES: nadaje pełen dostęp do bazy danych (lub dla całego Serwera MySQL, jak wskazano w poprzednich komendach);
- CREATE: zezwala użytkownikowi na tworzenie nowych baz danych i tabel;
- DROP: zezwala użytkownikowi na usuwanie baz danych i tabel;
- DELETE: zezwala użytkownikowi na usuwanie rekordów z tabel;
- INSERT: zezwala użytkownikowi na wprowadzanie rekordów do tabel;
- SELECT: zezwala użytkownikowi na wysyłanie zapytań do baz w celu odczytu zawartości;
- UPDATE: zezwala użytkownikowi na modyfikację rekordów zawartych w tabelach;
- GRANT OPTION: zezwala użytkownikowi na nadawanie oraz usuwanie uprawnień innym użytkownikom.
Aby nadać użytkownikowi pełne uprawnienia, skorzystaj z komendy GRANT w następujący sposób:
> GRANT permission ON database.table TO ‘username’ @'localhost’;
Gdzie:
- permission: wskazuje typ uprawnień do nadania użytkownikowi (wybór z listy powyżej);
- database: wskazuje bazę danych, na której użytkownik może operować;
- table: wskazuje tabelę bazy danych, na której użytkownik może operować;
- username: nazwa użytkownika, któremu zostaną nadane uprawnienia.
W celu usunięcia uprawnień użytkownika, skorzystaj z komendy REVOKE:
> REVOKE permission ON database.table FROM 'username'@'localhost';
Usuwanie użytkownika MySQL
W celu usunięcia użytkownika, aby nie mógł dłużej uzyskać dostępu do bazy danych MySQL, skorzystaj z komendy DROP USER:
> DROP USER 'username'@'localhost';
Spróbuj zalogować się do MySQL w celu weryfikacji poprawnego usunięcia użytkownika:
mysql -u username -p
Gdzie 'username' będzie nazwą użytkownika, którego właśnie usunąłeś.
Podsumowanie
W poradniku przedstawiliśmy instalację MySQL na serwerze Ubuntu 18.04, oraz instrukcję tworzenia i usuwania użytkowników MySQL, którzy mogą uzyskać dostęp do baz danych i tabel za pomocą różnych uprawnień do odczytu i zapisu.
W przypadku braku kopii zapasowej, należy pamiętać, iż wszelkie wykonywane zmiany nie mogą zostać odwrócone. Należy zwrócić szczególną ostrożność na typy nadawanych użytkownikom uprawnień dostępowych do serwera MySQL za pomocą komend grant i revoke.