mysql create user how create new user mysql
Ten samouczek wyjaśnia polecenie MySQL Create User z różnymi mechanizmami autoryzacji, zarządzaniem hasłami, opcjami limitu zasobów itp.
Polecenie MySQL CREATE USER służy do tworzenia nowych użytkowników i udzielania szczegółowego dostępu do baz danych / tabel itp.
Wiele osób korzysta z instancji serwera MySQL, mając różne poziomy dostępu. Na przykład, niektórzy użytkownicy mają dostęp do odczytu do określonej bazy danych, podobnie niektórzy mogą mieć dostęp do odczytu i zapisu do określonej bazy danych itp.
Polecenie CREATE USER jest częściej używane przez administratorów MySQL do tworzenia użytkowników dla instancji MySQL Server i nadawania różnych uprawnień za pomocą zapytania GRANT.
Czego się nauczysz:
Moje polecenie SQL CREATE USER
Polecenie CREATE USER służy do tworzenia lub dodawania nowych kont do instancji serwera MySQL.
To polecenie jest ogólnie dostępne / jest używane przez administratorów MySQL do zarządzania dostępem do różnych użytkowników instancji serwera MySQL.
Podczas tworzenia użytkownika za pomocą polecenia UTWÓRZ UŻYTKOWNIKA możesz określić
- Uwierzytelnianie, którego należy używać podczas łączenia się z MySQL.
- Limit zasobów
- Właściwości zarządzania hasłami: wygaśnięcie hasła, ustawienia ponownego użycia hasła.
- Blokowanie konta: nowo utworzone konta będą albo zablokowane, albo odblokowane.
Konta tworzone są w tabeli systemowej MySQL o nazwie „Mysql.user”
Uwaga: Aby użyć polecenia CREATE USER, użytkownik powinien mieć uprawnienie CREATE_USER lub wstawić uprawnienie dla MySQL schemat systemu.
W najprostszej formie składnia polecenia CREATE USER jest następująca:
CREATE USER (IF NOT EXISTS) '{username}'@'{hostname}' IDENTIFIED BY '{passwordString}';
Zwróć uwagę na opcjonalne JEŚLI NIE ISTNIEJE . Gwarantuje to, że jeśli użytkownik już istnieje, wynik zapytania SQL spowoduje po prostu ostrzeżenie i brak błędu. Tutaj, 'Nazwa Użytkownika' odnosi się do rzeczywistej nazwy użytkownika, z którą użytkownik chciałby się połączyć i „Nazwa hosta” odnosi się do hosta, z którego użytkownik mógłby się połączyć.
Proszę zanotować, jeśli pole „nazwa hosta” pozostanie puste, przyjmuje się, że wartość hosta to „%”, co umożliwi każdemu hostowi połączenie się z określoną nazwą użytkownika.
Utwórz użytkownika z następującą składnią:
CREATE USER 'userx'@'localhost' IDENTIFIED BY 'password';
Za pomocą powyższego stwierdzenia utworzyliśmy użytkownika o nazwie użytkownika „userx” i haśle jako „hasło”. Nazwa hosta to localhost, ponieważ tworzymy użytkowników w naszej lokalnej instancji MySQL.
Spróbujmy wykonać zapytanie w tabeli mysql.users, aby zobaczyć wpis utworzonego przez nas użytkownika.
SELECT * from mysql.user
Zobaczysz wyniki jak poniżej:
Pierwszych 4 użytkowników jest wstępnie tworzonych podczas samej instalacji MySQL, podczas gdy ostatni wpis to utworzony przez nas użytkownik - tj. „Userx”.
Należy zauważyć, że w tym momencie właśnie utworzyliśmy użytkownika bez nadawania mu żadnych uprawnień w zakresie tworzenia / aktualizowania / wysyłania zapytań do bazy danych itp.
Spróbujmy zalogować się jako ten użytkownik za pomocą klienta MySQL.
Możesz użyć terminala, aby połączyć się za pomocą poniższego polecenia:
$ /usr/local/mysql/bin/mysql -u userx -p
Gdy pojawi się monit o hasło, wprowadź je jako „hasło”.
Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 33 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql>
Teraz utworzymy nową bazę danych za pomocą słowa kluczowego CREATE DATABASE.
mysql> create database student; ERROR 1044 (42000): Access denied for user 'userx'@'localhost' to database 'student'
Jak widać powyżej, został wygenerowany komunikat o błędzie informujący, że użytkownik „userx” nie ma dostępu do tworzenia BAZY DANYCH. Zobaczmy inne opcje, których można użyć z poleceniem CREATE USER.
UTWÓRZ UŻYTKOWNIKA za pomocą wtyczki Auth
„Wtyczka uwierzytelniająca” określa opcję uwierzytelniania i jest przechowywana w kolumnie wtyczek tabeli mysql.user. MySQL obsługuje kilka wtyczek uwierzytelniających.
Niektóre obsługiwane wtyczki są następujące:
- Natywne mieszanie haseł MySQL: Natywne mieszanie haseł to nic innego jak używanie SHA1 do przechowywania wartości haseł w tabeli mysql.users. Uważa się, że ten mechanizm jest mniej bezpieczny niż mieszanie haseł SHA1.
- SHA2 256 Haszowanie hasła: To jest domyślna wtyczka uwierzytelniająca używana przez MySQL. tj. nawet jeśli żadna wtyczka uwierzytelniająca nie jest określona poleceniem CREATE_USER, domyślnie ta wtyczka zostanie zastosowana.
- Uwierzytelnianie zewnętrzne przy użyciu LDAP: Protokół LDAP jest zwykle używany do łączenia uwierzytelniania MySQL z usługą Active Directory organizacji. Na przykład, uwierzytelnianie przy użyciu logowania jednokrotnego Google, OAuth lub Microsoft Outlook LDAP. Wymaga to również instalacji wtyczki LDAP po stronie MySQL. Aby uzyskać więcej informacji, możesz polecić tutaj.
>> Patrz tutaj aby uzyskać pełną listę obsługiwanych wtyczek.
Spróbujmy utworzyć użytkownika z domyślną wtyczką uwierzytelniającą i wtyczką uwierzytelniania SHA2 oraz odpowiadającymi im zaszyfrowanymi wartościami w tabeli mysql.users. Najpierw utworzymy użytkownika z domyślnym uwierzytelnianiem, którym jest (SHA2), i zobaczymy, co jest przechowywane w mysql.user stół.
jak otworzyć plik binarny w systemie Windows
CREATE USER IF NOT EXISTS 'user-default'@'localhost' IDENTIFIED BY 'P@ssw0rd'
Zobaczmy wtyczkę uwierzytelniającą dla tego użytkownika „user-default” w tabeli mysql.users:
SELECT host,user,plugin,authentication_string from mysql.user where user='user-default'
Tutaj w łańcuchu uwierzytelniania można zobaczyć jego wartość SHA-256 dla ciągu hasła - „P @ ssw0rd”.
Utwórzmy teraz użytkownika z wtyczką uwierzytelniającą. „Natywne hasło MySQL” i zobacz, jaka jest wartość wtyczki, która jest przechowywana.
CREATE USER IF NOT EXISTS 'user-sha1'@'localhost' IDENTIFIED WITH mysql_native_password BY 'P@ssw0rd'
SELECT host,user,plugin,authentication_string from mysql.user where user='user-sha1'
UTWÓRZ UŻYTKOWNIKA Z ROLĄ
MySQL umożliwia także przypisywanie predefiniowanych ról nowym użytkownikom. Te role mają już skonfigurowany dostęp do niektórych lub wszystkich baz danych (które również można dostosować), na przykład, można by utworzyć rolę o nazwie „programista”, której można by przypisać wszystkie uprawnienia do bazy danych, a później możemy użyć tej samej roli do przypisania nowym użytkownikom.
Zobaczmy to na przykładzie:
- Utwórz rolę o nazwie deweloper
CREATE ROLE 'developer'
- Utwórz bazę danych o nazwie „test”
CREATE DATABASE test
- Przypisz uprawnienia do testowania bazy danych pod kątem roli „programisty”
GRANT ALL ON test.* TO 'developer'
- Utwórz użytkownika i przypisz rolę programisty
CREATE USER IF NOT EXISTS 'user-with-role'@'localhost' DEFAULT ROLE developer;
- Sprawdź, czy użytkownik może utworzyć tabelę w testowej bazie danych
Spróbujmy zalogować się jako użytkownik o nazwie „użytkownik z rolą” i spróbujemy utworzyć nową tabelę w testowej bazie danych.
$ /usr/local/mysql/bin/mysql -u user-with-role Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 44 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> use test; Database changed mysql> create table test_table(name varchar(20)); Query OK, 0 rows affected (0.07 sec)
UTWÓRZ UŻYTKOWNIKA z SSL / TLS
Utworzenie użytkownika z opcjami SSL / TLS wymagałoby zarówno klienta, jak i serwera z zainstalowanymi certyfikatami SSL. Domyślnie SSL nie jest skonfigurowany dla MySQL.
Postępuj zgodnie z tymi kroki aby skonfigurować SSL dla instancji serwera MySQL.
Aby utworzyć użytkownika z włączonym SSL, możesz skorzystać z opcji ŻĄDANIE SSL podczas tworzenia użytkownika.
CREATE USER 'user-with-ssl'@'localhost' REQUIRE SSL;
Podobnie, tworzenie przy użyciu X509 wymagałoby, aby klient / użytkownik łączący się miał ważny certyfikat X509.
>> Patrz tutaj aby dowiedzieć się więcej o X509.
Aby utworzyć użytkownika z certyfikatem X509, użyj poniższego zapytania:
CREATE USER 'user-with-x509'@'localhost' REQUIRE X509;
UTWÓRZ UŻYTKOWNIKA z opcjami zarządzania hasłami
Opcje hasła służą do ustawiania zasad dotyczących hasła podczas tworzenia użytkownika za pomocą polecenia CREATE USER.
# 1) Wygaś hasło podczas logowania. Hasło wygasło po pierwszym użyciu i monituje użytkowników o zmianę hasła.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE;
#dwa) Wygaś hasło po określonym czasie. Wygaśnięcie hasła można skonfigurować w skonfigurowanym interwale, na przykład, 90 dni.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE INTERVAL 90 DAY;
# 3) Hasło zostaje zablokowane po skonfigurowanych próbach ponowienia. Często pożądane jest, aby konto użytkownika zostało zablokowane (na skonfigurowany okres) po „n” nieprawidłowych próbach ponowienia. W poniższym zapytaniu konto użytkownika zostanie zablokowane na 2 dni po 5 błędnych próbach.
CREATE USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 2;
# 4) Nowe hasło nie powinno być takie samo, jak skonfigurowane poprzednie hasła.
W poniższym zapytaniu nowe hasło ustawione przez użytkowników nie powinno być takie samo, jak poprzednie 2 hasła.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE PASSWORD HISTORY 2;
UTWÓRZ UŻYTKOWNIKA z opcjami limitu zasobów
Limity zasobów są wymagane zwłaszcza w przypadku produkcyjnych instancji MySQL, aby uniknąć przeciążenia bazy danych zapytaniami / żądaniami od pojedynczego użytkownika, co mogłoby wpłynąć na wydajność serwera MySQL.
Możemy ustawić limity zasobów, używając dowolnych 3 z poniższych opcji:
1) MAX_QUERIES_PER_HOUR - Liczba zapytań dotyczących pobierania dozwolonych dla danego użytkownika na godzinę.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_QUERIES_PER_HOUR 5
Załóżmy, że jeśli użytkownik spróbuje przekroczyć więcej niż 5 zapytań na godzinę, serwer MySQL wyświetli następujący błąd:
ERROR 1226 (42000): User 'user-with-resource-limits' has exceeded the 'max_questions' resource (current value: 5)
2) MAX_UPDATES_PER_HOUR - Liczba zapytań aktualizacyjnych dozwolonych dla danego użytkownika na godzinę.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 50
# 3) MAX_CONNECTIONS_PER_HOUR - Ile razy konto może łączyć się z serwerem w ciągu godziny.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 50
# 4) MAX_USER_CONNECTIONS - Liczba jednoczesnych połączeń z instancją serwera MySQL od danego użytkownika.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_USER_CONNECTIONS 50
Należy pamiętać, że wszystkie powyższe opcje można również łączyć podczas tworzenia użytkownika. Załóżmy, że jeśli chcemy określić MAX_QUERIES na 10 i MAX_UPDATES na 100, to możemy mieć jedno zapytanie CREATE_USER jako:
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 100 MAX_QUERIES_PER_HOUR 10
Aktualizacja MySQL i usuwanie użytkowników
MySQL udostępnia 2 ważne polecenia - ALTER USER i DROP USER do odpowiednio modyfikowania i usuwania istniejących użytkowników. Rozumiemy oba te kwestie na przykładach.
ZMIEŃ UŻYTKOWNIKA
MySQL ALTER USER służy do aktualizacji / modyfikacji istniejących kont użytkowników MySQL. Może być używany do,
- Zaktualizuj limity zasobów
- Ustaw opcje hasła
- Zablokuj i odblokuj konta itp.
Zobaczmy przykład użycia ALTER USER do odblokowania zablokowanego konta.
Utwórz użytkownika w stanie zablokowanym, a następnie odblokuj go za pomocą polecenia ALTER USER.
przykład tablicy skrótów w języku c ++
CREATE USER 'test'@'localhost'I DENTIFIED BY 'Password' ACCOUNT LOCK;
Teraz po zalogowaniu się z tym użytkownikiem otrzymamy wiadomość o zablokowaniu konta (ponieważ użytkownik został utworzony w stanie zablokowanego konta).
$ /usr/local/mysql/bin/mysql -u test -p Enter password: ERROR 3118 (HY000): Access denied for user 'test'@'localhost'. Account is locked.
Użyj poniższego zapytania, aby odblokować użytkownika za pomocą polecenia ALTER.
ALTER USER 'test'@'localhost' ACCOUNT UNLOCK
Zaloguj się jako użytkownik z klientem MySQL:
$ /usr/local/mysql/bin/mysql -u test -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 50 Server version: 8.0.20 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql>
UPUŚĆ UŻYTKOWNIKA
Polecenie MySQL DROP USER usuwa jednego lub więcej istniejących użytkowników i wszystkie powiązane z nimi uprawnienia i nadania.
Należy pamiętać, że nie usunie / usunie żadnych danych / tabel utworzonych lub zaktualizowanych przez użytkownika, które są usuwane.
Jeśli ktoś spróbuje usunąć nieistniejącego użytkownika, polecenie DROP USER spowoduje zgłoszenie błędu.
Utwórzmy użytkownika i usuńmy go za pomocą polecenia DROP:
CREATE USER 'test'@'localhost'; DROP USER 'test'@'localhost';
Często Zadawane Pytania
Pytanie 1) Kim jest użytkownik w MySQL?
Odpowiedź: Użytkownik w MySQL to konto / jednostka, która może logować się do instancji serwera MySQL i wykonywać różne operacje. Użytkownikowi można przypisać dostęp oparty na rolach lub szczegółowy dostęp do jednej lub wielu baz danych i / lub tabel.
Pytanie 2) Jak sprawdzić różnych użytkowników podłączonych do MySQL?
Odpowiedź: Aby zobaczyć aktywne sesje użytkowników na instancji serwera MySQL, możesz uruchomić polecenie processlist, jak poniżej.
SHOW processlist;
Dane wyjściowe tego polecenia będą wyświetlały różne atrybuty sesji aktywnego użytkownika połączonych w czasie wykonywania polecenia.
Przykładowe dane wyjściowe poniżej:
Pytanie 3) Jak zmienić użytkowników w MySQL?
Odpowiedź: MySQL działa na zasadzie sesji użytkownika. Po zalogowaniu się z danym użytkownikiem możesz zaplanować zakończenie sesji lub otwarcie sesji dla nowego użytkownika w nowym oknie lub jako nowe połączenie w klientach MySQL GUI, takich jak workbench.
Aby zalogować się konkretnym użytkownikiem z klienta mysql, możesz użyć poniższej składni:
mysql -u {userName} -p
Po wpisaniu powyższego polecenia, po naciśnięciu klawisza Enter, zostaniesz poproszony o podanie hasła dla użytkownika określonego w polu {nazwa_użytkownika}. Po zweryfikowaniu hasła zostaniesz przeniesiony do powłoki / wiersza poleceń MySQL.
Aby zalogować się za pomocą oddzielnego użytkownika, możesz zakończyć bieżącą sesję, wprowadzając polecenie exit i ponownie zalogować się jako inny użytkownik.
Otwieracz plików .jar dla systemu Windows 10
mysql> exit
Możliwe jest również posiadanie wielu połączeń z instancjami serwera MySQL dla różnych użytkowników. Możesz po prostu otworzyć nową kartę / okno dla wiersza polecenia i użyć tego samego polecenia, aby zalogować się z innym użytkownikiem.
mysql -u {userName2} -p
Q # 4) Jak ustawić użytkownika MySQL jako tylko do odczytu?
Odpowiedź: MySQL zapewnia wyczerpujący mechanizm udzielania szczegółowego dostępu do baz danych lub tabel. Możesz zapewnić różne rodzaje dostępu, takie jak SELECT, UPDATE, INSERT, itp. Do jednej lub wielu baz danych lub tabel.
Aby przyznać użytkownikowi dostęp tylko do odczytu, możesz przyznać dostęp SELECT do bazy danych (używając * dla wszystkich tabel lub jawnie podając nazwę tabeli zgodnie z wymaganiami)
Zrozummy to na poniższym przykładzie:
Tworzymy użytkownika o nazwie „readaccess” z hasłem „Password”
create user 'readaccess'@'localhost' IDENTIFIED BY 'Password'
Teraz przyznaj dostęp do odczytu wszystkich tabel bazy danych o nazwie „test”, używając słowa kluczowego GRANT w MySQL
grant select on test.* to 'readaccess'@'localhost'
Teraz, aby zweryfikować dostęp, możesz zalogować się jako użytkownik o nazwie „readaccess” i spróbować przeszukać tabele w bazie danych „test”.
Jeśli jednak spróbujesz wstawić dane do dowolnej z tabel w testowej bazie danych, otrzymasz błąd odmowy dostępu, ponieważ jawnie właśnie nadaliśmy temu użytkownikowi dostęp do odczytu.
Pytanie 5) Jak mogę zobaczyć użytkowników w MySQL?
Odpowiedź: MySQL zawiera tabelę na poziomie systemu o nazwie „mysql.user”, która zawiera listę wszystkich użytkowników utworzonych dla instancji serwera MySQL. Uprawnienia do tej tabeli są na ogół ograniczone do użytkowników root lub administratora lub osoby, która zarządza uwierzytelnianiem i autoryzacją dla instancji serwera MySQL.
Pytanie 6) Jak znaleźć nazwę użytkownika i hasło MySQL?
Odpowiedź: Mapowanie użytkowników i haseł MySQL jest przechowywane w tabeli systemowej „mysql.user”, która jest tabelą z ograniczonym dostępem. Hasło jest przechowywane w postaci zaszyfrowanej w zależności od trybu szyfrowania, który został wybrany podczas tworzenia użytkownika.
Jeśli jednak czyjeś konto jest zablokowane, MySQL udostępnia inne polecenie o nazwie ALTER USER, którego można użyć do odblokowania danego konta użytkownika.
Wniosek
W tym samouczku dowiedzieliśmy się o poleceniu MySQL CREATE USER, które jest używane do uwierzytelniania i zarządzania dostępem ogólnie przez administratorów baz danych.
MySQL zapewnia wiele potężnych mechanizmów uwierzytelniania i przypisań opartych na rolach, które umożliwiają tworzenie nowych użytkowników z predefiniowanymi przydziałami dostępu. Widzieliśmy również przykłady tworzenia użytkowników z różnymi mechanizmami autoryzacji, różnymi ustawieniami haseł, opcjami wygaśnięcia itp.
rekomendowane lektury
- Jak pobrać MySQL dla Windows i Mac
- MySQL - samouczek dotyczący tworzenia widoku z przykładami kodu
- MySQL Tworzenie tabeli z przykładami
- 31 Najczęściej zadawane pytania i odpowiedzi na pytania dotyczące testowania baz danych
- Samouczek normalizacji baz danych: 1NF 2NF 3NF BCNF Przykłady
- Kompletny przewodnik po testowaniu baz danych (dlaczego, co i jak testować dane)
- MongoDB Utwórz kopię zapasową bazy danych
- MongoDB Utwórz użytkownika i przypisz role z przykładami