15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij
01.11.2024
1 +1

Jak utworzyć nowego użytkownika i ustawić uprawnienia w MySQL

MySQL pozostaje jednym z najszerzej wdrażanych relacyjnych systemów zarządzania bazami danych na świecie, zasilając wszystko od małych projektów osobistych do aplikacji na skalę przedsiębiorstwa. Niezależnie od tego, czy jesteś deweloperem, administratorem systemu czy właścicielem firmy zarządzającym własną infrastrukturą, umiejętność tworzenia użytkowników MySQL i konfigurowania ich uprawnień jest niezbędną umiejętnością do utrzymania bezpiecznego, dobrze zorganizowanego środowiska bazy danych.

Słabe zarządzanie użytkownikami jest jedną z głównych przyczyn naruszeń baz danych. Przyznawanie nadmiernych uprawnień, ponowne użycie poświadczeń lub pozostawienie aktywnych kont domyślnych może narazić całą warstwę danych na niepotrzebne ryzyko. Ten przewodnik przeprowadzi Cię przez cały proces — od logowania się do MySQL do weryfikacji uprawnień — z jasnymi poleceniami, praktycznymi przykładami i najlepszymi praktykami bezpieczeństwa na każdym kroku.

Dlaczego zarządzanie użytkownikami MySQL ma znaczenie

Zanim przejdziemy do poleceń, warto zrozumieć *dlaczego* to ma znaczenie. MySQL działa na zasadzie najmniejszego przywileju: każdy użytkownik powinien mieć dostęp tylko do konkretnych baz danych, tabel i operacji, które naprawdę potrzebuje. Minimalizuje to zasięg skompromitowanego konta i znacznie ułatwia audyt.

Jeśli uruchamiasz MySQL na zarządzanym planie VPS Hosting lub Dedicated Server, masz pełny dostęp na poziomie root do instancji MySQL, co daje Ci pełną kontrolę nad tworzeniem użytkowników i zarządzaniem uprawnieniami. Wiele środowisk panelu sterowania — takich jak te dostępne w VPS z cPanel — zapewnia również graficzny interfejs do zarządzania MySQL, który może uzupełniać podejście wiersza poleceń opisane tutaj.

Wymagania wstępne

Zanim zaczniesz, upewnij się, że masz:

  • MySQL 5.7+ lub MySQL 8.0+ zainstalowany i uruchomiony na serwerze
  • Dostęp root lub dostęp do konta superużytkownika MySQL z GRANT OPTION uprawnieniami
  • Dostęp do terminala (Linux/macOS) lub Wiersz poleceń / PowerShell (Windows)

Krok 1: Zaloguj się do MySQL

Aby zarządzać użytkownikami i uprawnieniami, musisz uwierzytelnić się jako użytkownik z wystarczającymi uprawnieniami administracyjnymi. W większości przypadków jest to konto root.

Otwórz terminal lub wiersz poleceń

  • Linux / macOS: Otwórz aplikację terminala
  • Windows: Otwórz Wiersz poleceń lub PowerShell

Połącz się z serwerem MySQL

Uruchom następujące polecenie:

mysql -u root -p

Zostaniesz poproszony o wprowadzenie hasła root. Po pomyślnym uwierzytelnieniu zobaczysz wiersz polecenia MySQL:

mysql>

> Wskazówka bezpieczeństwa: Jeśli łączysz się ze zdalnym serwerem MySQL, określ hosta za pomocą flagi -h:

> “`bash

> mysql -u root -p -h your_server_ip

> “`

Krok 2: Utwórz nowego użytkownika MySQL

Po wejściu do powłoki MySQL możesz utworzyć nowego użytkownika za pomocą instrukcji CREATE USER.

Składnia

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

Podział parametrów:

ParametrOpis
usernameNazwa, którą chcesz przypisać nowemu użytkownikowi
hostHost, z którego użytkownik może się połączyć. Użyj localhost dla dostępu tylko lokalnego lub % jako symbolu wieloznacznego dla dowolnego hosta
passwordSilne, unikalne hasło dla tego użytkownika

Przykład: Utwórz użytkownika dostępnego z dowolnego hosta

CREATE USER 'newuser'@'%' IDENTIFIED BY 'StrongP@ssw0rd!';

Przykład: Utwórz użytkownika ograniczonego do localhost

CREATE USER 'localuser'@'localhost' IDENTIFIED BY 'AnotherStr0ng#Pass';

> Najlepsza praktyka: Wszędzie tam, gdzie to możliwe, ogranicz użytkowników do localhost lub określonego adresu IP zamiast używać %. Dostęp hosta ze znakami wieloznacznymi niepotrzebnie zwiększa Twoją powierzchnię ataku.

Notatka MySQL 8.0 dotycząca wtyczek uwierzytelniania

MySQL 8.0 wprowadził caching_sha2_password jako domyślną wtyczkę uwierzytelniania, która może powodować problemy ze zgodnością ze starszymi klientami lub aplikacjami. W razie potrzeby możesz jawnie ustawić metodę uwierzytelniania:

CREATE USER 'newuser'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongP@ssw0rd!';

Krok 3: Przyznaj uprawnienia użytkownikowi

Utworzenie użytkownika nie powoduje automatycznego przyznania mu dostępu do żadnej bazy danych. Musisz jawnie przypisać uprawnienia za pomocą instrukcji GRANT.

Składnia

GRANT privileges ON database.table TO 'username'@'host';

Podział parametrów:

ParametrOpis
privilegesLista uprawnień oddzielonych przecinkami (np. SELECT, INSERT, UPDATE, DELETE) lub ALL PRIVILEGES
database.tableZakres przyznania. Użyj *.* dla wszystkich baz danych i tabel, dbname.* dla wszystkich tabel w określonej bazie danych lub dbname.tablename dla pojedynczej tabeli
username@hostDocelowe konto użytkownika

Typowe uprawnienia MySQL

UprawnienieOpis
SELECTOdczytuj dane z tabel
INSERTDodaj nowe wiersze do tabel
UPDATEModyfikuj istniejące wiersze
DELETEUsuń wiersze z tabel
CREATEUtwórz nowe bazy danych lub tabele
DROPUsuń bazy danych lub tabele
INDEXUtwórz lub usuń indeksy
ALTERModyfikuj struktury tabel
ALL PRIVILEGESPełny dostęp (używaj ostrożnie)
GRANT OPTIONPozwól użytkownikowi przyznawać uprawnienia innym

Przykład: Przyznaj pełny dostęp do określonej bazy danych

GRANT ALL PRIVILEGES ON exampledb.* TO 'newuser'@'%';

Przykład: Przyznaj dostęp tylko do odczytu

GRANT SELECT ON exampledb.* TO 'readonly_user'@'localhost';

Przykład: Przyznaj określone uprawnienia do pojedynczej tabeli

GRANT SELECT, INSERT, UPDATE ON exampledb.orders TO 'app_user'@'localhost';

Przykład: Przyznaj uprawnienia globalne (używaj rzadko)

GRANT ALL PRIVILEGES ON *.* TO 'admin_user'@'localhost' WITH GRANT OPTION;

> Ostrzeżenie: Przyznanie ALL PRIVILEGES ON *.* daje użytkownikowi dostęp równoważny superużytkownikowi. Zarezerwuj to tylko dla zaufanych kont administracyjnych.

Krok 4: Odśwież uprawnienia

Po dokonaniu zmian w uprawnieniach użytkownika, dobrą praktyką jest przeładowanie tabel uprawnień, aby MySQL natychmiast rozpoznał Twoje zmiany:

FLUSH PRIVILEGES;

> Notatka: W nowoczesnych wersjach MySQL (5.7.3+), FLUSH PRIVILEGES jest automatycznie wyzwalany po instrukcjach GRANT, REVOKE i CREATE USER. Jednak uruchomienie go jawnie po ręcznych edycjach tabel systemowych mysql (poprzez INSERT lub UPDATE) pozostaje niezbędne.

Krok 5: Zweryfikuj uprawnienia użytkownika

Zawsze potwierdź, że uprawnienia, które ustawiłeś, są prawidłowe, zanim wprowadzisz konto użytkownika do produkcji.

Sprawdź uprawnienia dla określonego użytkownika

SHOW GRANTS FOR 'newuser'@'%';

Przykładowe wyjście:

+--------------------------------------------------------------+
| Grants for newuser@%                                         |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `newuser`@`%`                          |
| GRANT ALL PRIVILEGES ON `exampledb`.* TO `newuser`@`%`       |
+--------------------------------------------------------------+

Wyświetl listę wszystkich użytkowników MySQL

SELECT user, host FROM mysql.user;

Sprawdź własne uprawnienia bieżącego użytkownika

SHOW GRANTS;

Krok 6: Odwoływanie uprawnień (w razie potrzeby)

Uprawnienia zmieniają się w miarę upływu czasu. Gdy użytkownik nie potrzebuje już określonego dostępu, natychmiast go odwołaj za pomocą instrukcji REVOKE:

Składnia

REVOKE privileges ON database.table FROM 'username'@'host';

Przykład: Odwołaj wszystkie uprawnienia od użytkownika

REVOKE ALL PRIVILEGES ON exampledb.* FROM 'newuser'@'%';
FLUSH PRIVILEGES;

Przykład: Odwołaj określone uprawnienie

REVOKE DELETE ON exampledb.orders FROM 'app_user'@'localhost';

Krok 7: Usuwanie użytkownika (w razie potrzeby)

Jeśli konto użytkownika nie jest już potrzebne, usuń je całkowicie, aby wyeliminować niepotrzebne wektory dostępu:

DROP USER 'newuser'@'%';

To polecenie usuwa konto użytkownika i wszystkie powiązane uprawnienia w jednej operacji.

Zarządzanie użytkownikami MySQL w środowiskach hostowanych

Jeśli zarządzasz MySQL w środowisku hostingu współdzielonego lub zarządzanego, proces może się nieznacznie różnić w zależności od panelu sterowania. Platformy takie jak cPanel, Plesk i DirectAdmin zapewniają graficzne interfejsy do tworzenia użytkowników MySQL i przypisywania uprawnień bez pisania SQL bezpośrednio.

Dla użytkowników, którzy potrzebują pełnej kontroli wiersza poleceń bez obciążenia dedykowanego serwera, plany VPS Hosting oferują idealną równowagę wydajności, elastyczności i kosztów. Jeśli uruchamiasz aplikacje intensywnie korzystające z baz danych, które wymagają maksymalnej przepustowości i izolowanych zasobów, rozważ uaktualnienie do Dedicated Server w celu gwarantowanej wydajności.

W przypadku mniejszych projektów lub środowisk programistycznych, plany Shared Web Hosting zazwyczaj obejmują dostęp phpMyAdmin, który zapewnia interfejs oparty na przeglądarce do zarządzania użytkownikami MySQL i bazami danych.

Ponadto, jeśli Twoja aplikacja obsługuje wrażliwe dane użytkownika, sparowanie serwera bazy danych z ważnym SSL Certificate zapewnia, że dane przesyłane między Twoją aplikacją a serwerem bazy danych pozostają zaszyfrowane i chronione przed przechwyceniem.

Najlepsze praktyki bezpieczeństwa dla zarządzania użytkownikami MySQL

Wykonanie kroków technicznych to tylko połowa pracy. Oto krytyczne praktyki bezpieczeństwa, które każdy administrator powinien wdrożyć:

  1. Nigdy nie używaj konta root do połączeń aplikacji. Utwórz dedykowanych użytkowników z najmniejsz
15%

Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu:

Skills
Rozpocznij