Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zarządzanie użytkownikami MySQL

MySQL jest jednym z najpopularniejszych menedżerów baz danych na świecie. Zawiera wiele funkcji, które sprawiają, że jest niezawodny, wydajny i solidny. Jego maksymalną niezawodność osiąga się, jeśli jest właściwie używany. Tworzenie użytkowników z ograniczonymi uprawnieniami do bazy danych jest jednym z najłatwiejszych i najbardziej niezawodnych sposobów na zwiększenie bezpieczeństwa MySQL.

Utwórz użytkownika MySQL

Podczas instalacji MySQL, użytkownik root (administrator MySQL) jest pierwszym tworzonym użytkownikiem. Użytkownik root może robić wszystko i wszystko w bazie danych MySQL. Innym osobom wygodnym jest dostęp do Twojej bazy danych za pomocą tego konta.

Złośliwi użytkownicy mogą próbować zalogować się jako użytkownicy root, aby ukraść hostowane informacje lub zniszczyć usługę wraz z danymi. Dlatego administrator systemu musi utworzyć użytkowników z określonymi uprawnieniami w bazie danych. Gwarantuje to, że jeśli bezpieczeństwo tego użytkownika zostanie naruszone, wpływ będzie minimalny lub możliwy do opanowania.

Instrukcja MySQL Create User pozwala na utworzenie nowego konta użytkownika na serwerze bazy danych. Zapewnia uwierzytelnianie, limit zasobów, właściwości zarządzania rolami i hasłami dla nowych kont. Wyciąg pozwala nam również kontrolować konta, które powinny być zablokowane lub odblokowane.

Aby utworzyć użytkownika, wymagane jest posiadanie uprawnień globalnych (być użytkownikiem root) instrukcji „CREATE USER” lub uprawnienia INSERT dla schematu systemu MySQL. Błąd pojawia się, jeśli spróbujesz utworzyć użytkownika, który już istnieje, ale jeśli użyjesz klauzuli „IF NOT EXISTS”, instrukcja wyświetli ostrzeżenie dla każdego nazwanego użytkownika, który już istnieje, zamiast komunikatu o błędzie.

Aby utworzyć użytkownika innego niż root i nadać mu określone uprawnienia dostępu i modyfikacji bazy danych, używamy następującej składni:

CREATE USER IF NOT EXISTS 'fosslinux'@'localhost' IDENTIFIED BY 'foss12345';

Nazwa_konta składa się z dwóch części; nazwę użytkownika i nazwę hosta oddzielone symbolem @. Nazwa użytkownika to nazwa użytkownika, a nazwa hosta to nazwa hosta, z którego użytkownik może połączyć się z serwerem bazy danych.

username@hostname

Nazwa hosta jest opcjonalna. Jeśli nazwa hosta nie zostanie podana, użytkownik może połączyć się z dowolnego hosta na serwerze. Nazwa konta użytkownika bez nazwy hosta może być zapisana jako nazwa użytkownika@%

CREATE USER IF NOT EXISTS 'fosslinux@%' IDENTIFIED BY 'foss12345';

Należy zauważyć, że instrukcja create user tworzy nowego użytkownika z pełnym dostępem. aby nadać uprawnienia użytkownikowi, użyj instrukcji GRANT

Wykonaj następujące kroki, aby utworzyć nowego użytkownika w bazie danych MySQL:

1. Używając narzędzia klienta MySQL, otwórz serwer MySQL

2. Wpisz hasło, a następnie naciśnij Enter.

3. Utwórz nowego użytkownika za pomocą następującego polecenia

create user 'foss'@'localhost' identified by 'foss12345'; 

4. Użyj następującego polecenia, aby wyświetlić użytkowników na serwerze MySQL

select user from mysql.user;

Z przedstawionych danych wyjściowych użytkownik „foss” został pomyślnie utworzony.

5. Teraz użyj klauzuli IF NOT EXISTS z instrukcją CREATE USER, uruchamiając następujące polecenie:

Nadawanie uprawnień nowemu użytkownikowi MySQL

Niektóre z najczęstszych uprawnień zapewnianych przez serwer MySQL nowemu użytkownikowi obejmują;

1. WSZYSTKIE PRZYWILEJE: zezwala na wszystkie uprawnienia dla nowego konta użytkownika

2. UTWÓRZ: umożliwia kontu użytkownika tworzenie baz danych i tabel

3. ZRZUTNIJ: umożliwia kontu użytkownika usuwanie baz danych i tabel

4. USUŃ: umożliwia kontu użytkownika usuwanie wierszy z określonej tabeli

5. WSTAW: umożliwia kontu użytkownika wstawianie wierszy do określonej tabeli

6. WYBIERZ: umożliwia kontu użytkownika odczyt bazy danych

7. AKTUALIZACJA: umożliwia kontu użytkownika aktualizowanie wierszy tabeli

Wykonaj następujące polecenie, aby nadać użytkownikowi wszystkie uprawnienia

GRANT ALL PRIVILEGES ON *.* TO 'foss'@'localhost';

Wykonaj następujące polecenie, aby nadać określone uprawnienia nowo utworzonemu użytkownikowi,

GRANT CREATE, SELECT, INSERT ON *.* TO 'foss'@'localhost';

Aby usunąć wszystkie uprawnienia przypisane użytkownikowi, wykonaj poniższe polecenie.

FLUSH PRIVILEGES;

Aby zobaczyć istniejące uprawnienia przypisane użytkownikowi, wykonaj następujące polecenie.

SHOW GRANTS FOR 'foss'@'localhost';

Użytkownik MySQL Drop

Oświadczenie MySQL Drop User umożliwia usunięcie jednego lub więcej kont użytkowników i ich uprawnień z serwera bazy danych. Jeśli konto użytkownika nie istnieje na serwerze bazy danych, zwróci błąd.

Aby użyć instrukcji Drop User, musisz mieć uprawnienia globalne lub uprawnienie DELETE do schematu systemu MySQL.

Składnia całkowitego usuwania kont użytkowników z serwera bazy danych jest następująca:

DROP USER 'foss'@'localhost';

Uwaga: Nazwa konta w powyższym przykładzie jest identyfikowana jako nazwa_użytkownika@nazwa_hosta. Nazwa użytkownika to nazwa konta, które chcesz usunąć z serwera bazy danych, a nazwa hosta to nazwa serwera konta użytkownika. na przykład „foss@localhost”. fosa to nazwa użytkownika, a localhost to nazwa hosta.

Poniżej przedstawiono kroki, które należy wykonać podczas usuwania istniejącego użytkownika z bazy danych serwera MySQL;

1. Używając narzędzia klienta MySQL, otwórz serwer MySQL

2. Wpisz hasło do konta, a następnie naciśnij Enter

3. Aby usunąć konto użytkownika, wykonaj następujące polecenie

DROP USER 'fosslinux'@'localhost';

4. Wykonaj następujące polecenie, aby pokazać użytkownikom

select user from mysql.user; 

Otrzymasz wynik, w którym nazwa użytkownika fosslinux nie będzie obecna, jak pokazano poniżej:

5. Użytkownik Drop może być również wykorzystany do usunięcia więcej niż jednego konta użytkownika jednocześnie. Aby to zrobić, oddziel nazwy kont przecinkami.

Uwaga: Ponieważ już porzuciliśmy użytkowników, utworzymy dwóch użytkowników za pomocą koncepcji tworzenia użytkowników (fosslinuxtuts i fosslinux@%). Następnie uruchomimy polecenie w kroku 4, aby pokazać istniejących użytkowników, jak pokazano poniżej:

Teraz usuń dwóch użytkowników jednocześnie, używając poniższego polecenia:Wykonaj następujące polecenie, aby usunąć obu użytkowników:

DROP USER 'fosslinuxtuts'@'localhost', 'fosslinux@%' ;

Należy zauważyć, że instrukcja DROP nie może automatycznie zamknąć żadnej otwartej sesji użytkownika. Gdy instrukcja DROP jest wykonywana, gdy sesja konta użytkownika jest aktywna, polecenie nie wpływa na nią, dopóki sesja nie zostanie zamknięta. Konto użytkownika jest usuwane dopiero po zamknięciu sesji, a następna próba użytkownika nie będzie mogła się ponownie zalogować.

MySQL pokaż użytkowników/wymień wszystkich użytkowników

Aby zarządzać bazą danych w MySQL, musisz zobaczyć listę wszystkich kont użytkowników w bazie danych. Ludzie zakładają, że istnieje komenda SHOW USERS podobna do SHOW DATABASE lub SHOW TABLES do wyświetlania listy wszystkich użytkowników dostępnych na serwerze bazy danych. Niestety serwer MySQL nie posiada polecenia SHOW USERS do wyświetlenia listy wszystkich użytkowników serwera MySQL. Dlatego zamiast tego używamy następującego zapytania, aby zobaczyć listę wszystkich użytkowników na serwerze bazy danych:

Select user from mysql.user;

Po wykonaniu polecenia otrzymasz dane użytkownika z tabeli użytkowników serwera bazy danych MySQL.

Uwaga: W tym przykładzie użyjemy bazy danych MySQL. Wybierz bazę danych, uruchamiając poniższe polecenie, a następnie użyj instrukcji select from, aby sprawdzić istniejących użytkowników, jak pokazano na poniższym obrazku:

use mysql;
SELECT user FROM user;

Jeśli chcesz zobaczyć więcej informacji w tabeli użytkowników, wykonaj następujące polecenie:

DESC user;

Polecenie da następujące dane wyjściowe zawierające listę wszystkich dostępnych kolumn bazy danych mysql.user:

Aby uzyskać wybrane informacje, takie jak nazwa hosta, status wygaśnięcia hasła i blokada konta, wykonaj następujące zapytanie:

 SELECT user, host, account_locked, password_expired FROM user;

Po pomyślnym wykonaniu zapytania pojawi się następujący wynik:

Pokaż bieżącego użytkownika

Możesz uzyskać informacje o bieżącym użytkowniku za pomocą funkcji user() lub current_user(), jak pokazano poniżej:

Select user(); 

LUB

Select current_user();

Następujące dane wyjściowe pojawią się po pomyślnym wykonaniu któregokolwiek z powyższych poleceń.

Pokaż aktualnie zalogowanego użytkownika

Możesz zobaczyć użytkownika, który jest aktualnie zalogowany na serwerze bazy danych, używając następującego polecenia na serwerze MySQL:

SELECT user, host, db, command FROM information_schema.processlist;

Powyższe polecenia wyświetlają ekran podobny do pokazanego poniżej:

Jak zmienić hasło użytkownika MySQL

Rekordy użytkowników MySQL zawierają dane logowania, uprawnienia konta i informacje o hoście dla konta MySQL w celu uzyskania dostępu do bazy danych i zarządzania nią. Informacje logowania obejmują nazwę użytkownika i hasło. Dlatego może zaistnieć potrzeba zmiany hasła użytkownika w bazie danych MySQL.

Aby zmienić dowolne hasło do konta użytkownika, pamiętaj o następujących informacjach:

  • Szczegóły konta użytkownika do zmiany
  • Aplikacja jest używana przez konto użytkownika, którego hasło ma zostać zmienione. Jeśli hasło do konta użytkownika zostało zresetowane bez zmiany ciągu połączenia aplikacji, aplikacja nie może połączyć się z serwerem bazy danych.

MySQL umożliwia zmianę hasła do konta użytkownika na trzy różne sposoby:

  1. Oświadczenie UPDATE
  2. Oświadczenie SET PASSWORD
  3. Oświadczenie ALTER USER

Zmiana hasła do konta użytkownika za pomocą instrukcji UPDATE

Po wykonaniu instrukcji UPDATE, używamy instrukcji FLUSH PRIVILEGE do przeładowania uprawnień z tabeli grantów bazy danych MySQL.
Załóżmy, że chcesz zmienić hasło dla konta użytkownika, które łączy się z hosta lokalnego z hasłem foss12345, wykonaj następujące polecenie:

USE mysql;
UPDATE user SET password=password('kip12345') WHERE user='foss'; 
FLUSH PRIVILEGES;

Powyższa instrukcja nie będzie działać na MySQL w wersji 5.7.6 lub nowszej, ponieważ tabela użytkowników MySQL zawiera kolumnę ciągu uwierzytelniającego, która przechowuje tylko hasło. Wyższe wersje mają kolumnę ciągu uwierzytelniającego w instrukcji UPDATE, jak pokazano w następującej instrukcji:

USE mysql;
UPDATE user SET authentication_string = password('foss12345') WHERE user = 'foss';

FLUSH PRIVILEGES;

Uwaga: Ta metoda działa tylko ze starszymi wersjami MySQL. Dlatego jeśli masz nowszą lub najnowszą wersję MySQL, przejdź do innych metod.

Zmiana hasła do konta użytkownika za pomocą instrukcji SET PASSWORD

Jeśli chcesz zmienić hasło do innego konta, musisz mieć uprawnienie UPDATE. Wyciąg używa konta użytkownika w następującym formacie:nazwa_użytkownika@localhost

Ponowne wczytywanie uprawnień z tabel rant bazy danych MySQL przy użyciu uprawnień FLUSH PRIVILEGES nie musi być używane. Aby zmienić hasło konta użytkownika (foss) za pomocą instrukcji SET PASSWORD, użyj następującej instrukcji:

SET PASSWORD FOR 'foss'@'localhost' = PASSWORD('foss12345');

Jeśli używasz MySQL w wersji 5.7.6 lub nowszej, powyższe stwierdzenie jest przestarzałe i nie będzie działać w przyszłych wydaniach. Zamiast tego użyj następującego oświadczenia;

SET PASSWORD FOR 'foss'@'localhost' = 'foss12345';

Zmiana hasła do konta użytkownika za pomocą instrukcji ALTER USER

MySQL używa instrukcji ALTER USER z klauzulą ​​IDENTIFIED BY. Aby to zrobić, użyj następującej składni:

ALTER USER 'foss'@'localhost' IDENTIFIED BY 'foss12345';

Może być konieczne zresetowanie hasła konta root MySQL. Aby to zrobić, możesz wymusić zatrzymanie, a następnie zrestartować serwer bazy danych MySQL bez użycia walidacji tabeli grantów.

Wniosek

W tym artykule kompleksowo omówiono wszystkie aspekty związane z zarządzaniem użytkownikami MySQL. Uważamy, że jest wystarczająco szczegółowy, aby dostarczyć Ci rozwiązań Twoich problemów. Jeśli napotkasz błędy lub trudności podczas pokazywania użytkownikom korzystającym z MySQL, skontaktuj się z sekcją komentarzy, aby uzyskać pomoc. Dziękuję za przeczytanie.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Powszechny błąd MySQL:„Wystąpił błąd odczytu pakietu komunikacyjnego”

  2. Jaka jest różnica między łączeniem oddzielonym przecinkami a łączeniem według składni w MySQL?

  3. warunkowe sprzężenie w mysql

  4. Konwertuj z daty i godziny MySQL na inny format za pomocą PHP

  5. Jakiego typu/długości kolumny należy użyć do przechowywania zaszyfrowanego hasła Bcrypt w bazie danych?