mysql create user how create new user mysql
Tento výukový program vysvětluje příkaz MySQL Create User s různými autorizačními mechanismy, správou hesel, možnostmi omezení zdrojů atd.:
Příkaz MySQL CREATE USER se používá k vytváření nových uživatelů a udělení granulárního přístupu k databázím / tabulkám atd.
Instanci serveru MySQL používá více lidí, kteří mají různé úrovně přístupu. Například, někteří uživatelé mají přístup ke čtení do konkrétní databáze, podobně mohou mít někteří přístup ke čtení a zápisu do konkrétní databáze atd.
Příkaz CREATE USER je MySQL Admins častěji používán k vytváření uživatelů pro instance serveru MySQL a přidělení různých oprávnění pomocí dotazu GRANT.
Co se naučíte:
Můj příkaz SQL CREATE USER
Příkaz CREATE USER se používá k vytvoření nebo přidání nových účtů k instancím serveru MySQL.
Tento příkaz je obecně přístupný / používají ho správci MySQL ke správě přístupu k různým uživatelům instance serveru MySQL.
Při vytváření uživatele pomocí příkazu CREATE USER můžete určit
- Ověřování, které by mělo být použito při připojování k MySQL.
- Omezení zdrojů
- Vlastnosti správy hesel: Vypršení platnosti hesla, nastavení opětovného použití hesla.
- Zamykání účtů: Nově vytvořené účty budou uzamčeny nebo odemčeny.
Účty jsou vytvářeny v systémové tabulce MySQL s názvem „Mysql.user“
Poznámka: Chcete-li použít příkaz CREATE USER, měl by mít uživatel oprávnění CREATE_USER nebo oprávnění pro vložení MySQL systémové schéma.
V nejjednodušší podobě je syntaxe příkazu CREATE USER uvedena níže:
nejlepší DVD Ripper pro Windows 7
CREATE USER (IF NOT EXISTS) '{username}'@'{hostname}' IDENTIFIED BY '{passwordString}';
Všimněte si volitelného POKUD NEEXISTUJE . Tím je zajištěno, že pokud uživatel již existuje, výsledek dotazu SQL pouze vyvolá varování a žádnou chybu. Tady, „Uživatelské jméno“ odkazuje na skutečné uživatelské jméno, ke kterému by se uživatel připojil a „Hostname“ odkazuje na hostitele, ze kterého by se uživatel připojil.
Mějte na paměti, pokud pole „název hostitele“ zůstane prázdné, pak se předpokládá, že hodnota hostitele je „%“, což by umožnilo každému hostiteli připojit se zadaným uživatelským jménem.
Vytvořte uživatele s touto syntaxí:
CREATE USER 'userx'@'localhost' IDENTIFIED BY 'password';
S výše uvedeným tvrzením jsme vytvořili uživatele s uživatelským jménem „userx“ a heslem jako „heslo“. Název hostitele je localhost, protože vytváříme uživatele v naší místní instanci MySQL.
Zkusme dotazovat se na tabulku mysql.users, abychom viděli záznam pro uživatele, kterého jsme vytvořili.
SELECT * from mysql.user
Uvidíte výstup níže:
První 4 uživatelé jsou předem vytvořeni během samotné instalace MySQL, zatímco poslední položka je uživatel, kterého jsme vytvořili - tj. „Userx“.
Je důležité si uvědomit, že v tomto okamžiku jsme právě vytvořili uživatele, aniž bychom mu udělovali práva, pokud jde o vytváření / aktualizaci / dotazování na databázi atd.
Zkusme se pomocí tohoto uživatele přihlásit pomocí klienta MySQL.
Terminál můžete použít k připojení pomocí níže uvedeného příkazu:
$ /usr/local/mysql/bin/mysql -u userx -p
Po zobrazení výzvy k zadání hesla zadejte heslo jako „heslo“.
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>
Nyní vytvoříme novou databázi pomocí klíčového slova CREATE DATABASE.
mysql> create database student; ERROR 1044 (42000): Access denied for user 'userx'@'localhost' to database 'student'
Jak vidíte výše, vygeneruje se chybová zpráva, která říká, že uživatel „userx“ nemá přístup k vytváření DATABÁZE Podívejme se na další možnosti, které lze použít s příkazem CREATE USER.
VYTVOŘIT UŽIVATELE pomocí pluginu Auth
‘Auth plugin’ specifikuje možnost autentizace & je uložen ve sloupci pluginu v tabulce mysql.user. MySQL podporuje několik autentizačních pluginů.
Některé podporované doplňky jsou uvedeny níže:
- MySQL nativní heslo hash: Nativní hash hesla není nic jiného než použití SHA1 k ukládání hodnot hesla v tabulce mysql.users. Tento mechanismus je považován za méně bezpečný než hash hesla SHA1.
- SHA2 256 hashování hesla: Toto je výchozí plugin pro autentizaci používaný MySQL. tj. i když není zadán žádný ověřovací modul s příkazem CREATE_USER, ve výchozím nastavení by se tento modul použil.
- Externí ověřování pomocí LDAP: LDAP se obecně používá k propojení autentizace MySQL s aktivním adresářem organizace. Například, ověřování pomocí Google SSO, OAuth nebo Microsoft Outlook LDAP. To vyžaduje také instalaci pluginu LDAP na straně MySQL. Další podrobnosti naleznete v článku tady.
>> Viz tady pro úplný seznam podporovaných pluginů.
Zkusme vytvořit uživatele s výchozím zásuvným modulem Auth a zásuvným modulem SHA2 Auth a jejich odpovídajícími hašovanými hodnotami v tabulce mysql.users. Nejprve vytvoříme uživatele s výchozím ověřením, kterým je (SHA2), a uvidíme, co je v něm uloženo mysql.user stůl.
CREATE USER IF NOT EXISTS 'user-default'@'localhost' IDENTIFIED BY 'P@ssw0rd'
Podívejme se na ověřovací plugin pro tohoto uživatele „user-default“ v tabulce mysql.users:
SELECT host,user,plugin,authentication_string from mysql.user where user='user-default'
Tady v authentication_string můžete vidět jeho hodnotu SHA-256 pro řetězec hesla - „P @ ssw0rd“.
Pojďme nyní vytvořit uživatele pomocí ověřovacího pluginu. „Nativní heslo MySQL“ a podívejte se, jaká je hodnota pluginu, který se uloží.
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'
VYTVOŘIT UŽIVATELE s rolí
MySQL také poskytuje přidělování předdefinovaných rolí novým uživatelům. Tyto role již mají nakonfigurovaný přístup k některým nebo všem databázím (které lze také přizpůsobit), například, mohla by být vytvořena role s názvem „vývojář“, které by bylo možné přiřadit všechna oprávnění k databázi a později můžeme stejnou roli použít k přiřazení novým uživatelům.
Podívejme se na příklad:
- Vytvořte roli s názvem vývojář
CREATE ROLE 'developer'
- Vytvořte databázi s názvem „test“
CREATE DATABASE test
- Přiřaďte oprávnění k testování databáze pro roli „vývojáře“
GRANT ALL ON test.* TO 'developer'
- Vytvořte uživatele a přiřaďte roli vývojáře
CREATE USER IF NOT EXISTS 'user-with-role'@'localhost' DEFAULT ROLE developer;
- Ověřte, že uživatel může vytvořit tabulku v testovací databázi
Zkusme se přihlásit pomocí uživatele s názvem „uživatel s rolí“ a pokusíme se vytvořit novou tabulku v testovací databázi.
$ /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)
VYTVOŘTE UŽIVATELE S SSL / TLS
Vytvoření uživatele s možnostmi SSL / TLS by vyžadovalo, aby klient i server měli nainstalované certifikáty SSL. Ve výchozím nastavení není SSL pro MySQL nakonfigurován.
Postupujte podle těchto pokynů kroky konfigurovat SSL pro instanci serveru MySQL.
Chcete-li vytvořit uživatele s povoleným SSL, můžete při vytváření uživatele použít volbu VYŽADOVAT SSL.
CREATE USER 'user-with-ssl'@'localhost' REQUIRE SSL;
Podobně by vytvoření pomocí X509 očekávalo, že se klient / uživatel připojí, aby měl platný certifikát X509.
>> Viz tady pochopit více o X509.
Chcete-li vytvořit uživatele s certifikátem X509, použijte následující dotaz:
CREATE USER 'user-with-x509'@'localhost' REQUIRE X509;
VYTVOŘTE UŽIVATELE s možnostmi správy hesel
Možnosti hesla se používají k nastavení zásad pro Heslo při vytváření uživatele pomocí příkazu VYTVOŘIT UŽIVATELE.
# 1) Při přihlášení vyprší platnost hesla. Platnost hesla vypršela po prvním použití a vyzve uživatele ke změně hesla.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE;
#dva) Po uplynutí stanoveného intervalu platnost hesla vyprší. Vypršení platnosti hesla lze konfigurovat podle nakonfigurovaného intervalu, například, 90 dnů.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE INTERVAL 90 DAY;
# 3) Heslo se uzamkne po nakonfigurovaných pokusech o opakování. Mnohokrát je žádoucí, aby byl uživatelský účet uzamčen (po nakonfigurovanou dobu) po nesprávných pokusech o opakování. V níže uvedeném dotazu by se uživatelský účet uzamkl na 2 dny po 5 nesprávných pokusech.
CREATE USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 2;
# 4) Nové heslo by nemělo být stejné jako nakonfigurovaná předchozí hesla.
V níže uvedeném dotazu by nové heslo nastavené uživateli nemělo být stejné jako poslední 2 hesla.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE PASSWORD HISTORY 2;
VYTVOŘIT UŽIVATELE s možnostmi omezení zdroje
Omezení zdrojů jsou vyžadována zejména pro produkční instance MySQL, aby se zabránilo zahlcení databáze dotazy / požadavky od jednoho uživatele a které by mohly ovlivnit výkon serveru MySQL.
Můžeme nastavit limity zdrojů pomocí libovolné 3 z těchto možností níže:
# 1) MAX_QUERIES_PER_HOUR - Počet povolených dotazů na získání pro daného uživatele za hodinu.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_QUERIES_PER_HOUR 5
Předpokládejme, že pokud se uživatel pokusí překročit více než 5 dotazů za hodinu, server MySQL by způsobil chybu jako níže:
ERROR 1226 (42000): User 'user-with-resource-limits' has exceeded the 'max_questions' resource (current value: 5)
# 2) MAX_UPDATES_PER_HOUR - Počet aktualizačních dotazů povolených pro daného uživatele za hodinu.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 50
# 3) MAX_CONNECTIONS_PER_HOUR - Kolikrát se může účet připojit k serveru za hodinu.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 50
# 4) MAX_USER_CONNECTIONS - Počet současných připojení k instanci serveru MySQL od daného uživatele.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_USER_CONNECTIONS 50
Vezměte prosím na vědomí, že všechny výše uvedené možnosti lze také kombinovat při vytváření uživatele. Předpokládejme, že pokud chceme zadat MAX_QUERIES jako 10 a MAX_UPDATES jako 100, pak můžeme mít jeden dotaz CREATE_USER jako:
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 100 MAX_QUERIES_PER_HOUR 10
Aktualizace a mazání uživatelů MySQL
MySQL poskytuje 2 důležité příkazy - ALTER USER a DROP USER k úpravám a mazání stávajících uživatelů. Rozumíme oběma na příkladech.
ZMĚNIT UŽIVATELE
MySQL ALTER USER se používá k aktualizaci / úpravě stávajících uživatelských účtů MySQL. Může být zvyklý na,
- Aktualizujte limity prostředků
- Nastavte možnosti hesla
- Zamykání a odemykání účtů atd.
Podívejme se na příklad použití ALTER USER k odemknutí uzamčeného účtu.
Vytvořte uživatele v uzamčeném stavu a poté jej odemkněte pomocí příkazu ALTER USER.
CREATE USER 'test'@'localhost'I DENTIFIED BY 'Password' ACCOUNT LOCK;
Nyní se při přihlášení k tomuto uživateli zobrazí zpráva o uzamčení účtu (protože uživatel byl vytvořen ve stavu uzamčeného účtu).
$ /usr/local/mysql/bin/mysql -u test -p Enter password: ERROR 3118 (HY000): Access denied for user 'test'@'localhost'. Account is locked.
Pomocí níže uvedeného dotazu odemknete uživatele pomocí příkazu ALTER.
ALTER USER 'test'@'localhost' ACCOUNT UNLOCK
Přihlaste se pomocí uživatele pomocí klienta 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>
DROP UŽIVATEL
Příkaz MySQL DROP USER odebere jednoho nebo více stávajících uživatelů a všechna jejich přidružená oprávnění a granty.
Vezměte prosím na vědomí, že neodstraní ani neodstraní žádná vložená data / tabulky vytvořené nebo aktualizované uživatelem, který je mazán.
Pokud se někdo pokusí odstranit neexistujícího uživatele, příkaz DROP USER vyvolá chybu.
Vytvořme uživatele a smažeme ho pomocí příkazu DROP:
CREATE USER 'test'@'localhost'; DROP USER 'test'@'localhost';
Často kladené otázky
Otázka č. 1) Co je uživatel v MySQL?
Odpovědět: Uživatel v MySQL je účet / entita, která se může přihlásit k instanci serveru MySQL a provádět různé operace. Uživateli lze přiřadit přístup na základě rolí nebo granulární přístup k jedné nebo více databázím a / nebo tabulkám.
Otázka 2) Jak zkontrolovat různé uživatele připojené k MySQL?
Odpovědět: Chcete-li zobrazit aktivní relace uživatele na instanci serveru MySQL, můžete spustit příkaz processlist, jak je uvedeno níže.
SHOW processlist;
Výstup tohoto příkazu by zobrazoval různé atributy relací aktivního uživatele připojených v době provádění příkazu.
Ukázkový výstup níže:
Otázka č. 3) Jak přepnu uživatele v MySQL?
Odpovědět: MySQL pracuje na konceptu uživatelských relací. Když jste přihlášeni s daným uživatelem, můžete buď naplánovat ukončení relace, nebo otevřít relaci proti novému uživateli v novém okně nebo jako nové připojení v klientech MySQL GUI jako pracovní stůl.
Pro přihlášení s konkrétním uživatelem z mysql klienta můžete použít následující syntaxi:
mysql -u {userName} -p
Po napsání výše uvedeného příkazu budete po stisknutí klávesy Enter vyzváni k zadání hesla pro uživatele uvedeného v poli {userName}. Po ověření hesla budete přesměrováni na příkazový řádek MySQL.
Chcete-li se přihlásit pomocí samostatného uživatele, aktuální relaci můžete ukončit zadáním příkazu exit a opětovným přihlášením s jiným uživatelem.
mysql> exit
Je také možné mít více připojení k instancím serveru MySQL pro různé uživatele. Můžete jednoduše otevřít novou kartu / okno příkazového řádku a použít stejný příkaz k přihlášení k jinému uživateli.
základní otázky a odpovědi na java rozhovor
mysql -u {userName2} -p
Otázka č. 4) Jak nastavit uživatele MySQL jen pro čtení?
Odpovědět: MySQL poskytuje vyčerpávající mechanismus pro udělení granulárního přístupu k databázím nebo tabulkám. K jedné nebo více databázím nebo tabulkám můžete poskytnout různé druhy přístupu, jako je SELECT, UPDATE, INSERT atd.
Chcete-li uživateli udělit přístup jen pro čtení, můžete udělit přístup SELECT k databázi (pomocí * pro všechny tabulky nebo výslovným uvedením názvu tabulky podle požadavku)
Pochopme to pomocí níže uvedeného příkladu:
Vytváříme uživatele s názvem „readaccess“ s heslem „Password“
create user 'readaccess'@'localhost' IDENTIFIED BY 'Password'
Nyní udělejte přístup ke čtení ke všem tabulkám databáze s názvem „test“ pomocí klíčového slova GRANT v MySQL
grant select on test.* to 'readaccess'@'localhost'
Nyní pro ověření přístupu se můžete přihlásit pomocí tohoto uživatele s názvem „readaccess“ a zkusit dotazovat tabulky uvnitř databáze „test“.
Pokud se však pokusíte vložit data do kterékoli z tabulek uvnitř testovací databáze, zobrazí se vám chyba odepření přístupu, protože jsme tomuto uživateli výslovně právě udělili přístup ke čtení.
Otázka č. 5) Jak vidím uživatele v MySQL?
Odpovědět: MySQL má tabulku na úrovni systému s názvem „mysql.user“, která obsahuje seznam všech uživatelů vytvořených pro instanci serveru MySQL. Oprávnění k této tabulce jsou obecně omezena na uživatele root nebo admin nebo někoho, kdo spravuje ověřování a autorizaci pro instanci serveru MySQL.
Otázka č. 6) Jak zjistit uživatelské jméno a heslo uživatele MySQL?
Odpovědět: Mapování uživatelů a hesel MySQL je uloženo v systémové tabulce „mysql.user“, což je tabulka s omezeným přístupem. Heslo je uloženo v šifrovaném formátu v závislosti na režimu šifrování, který byl zvolen během vytváření uživatele.
Pokud je však účet někoho uzamčen, MySQL poskytuje další příkaz s názvem ALTER USER, kterým lze daný uživatelský účet odemknout.
Závěr
V tomto výukovém programu jsme se dozvěděli o příkazu MySQL CREATE USER, který obecně pro správu a správu přístupu používají správci databáze.
MySQL poskytuje mnoho výkonných autentizačních mechanismů a přiřazení podle rolí, které umožňují vytváření nových uživatelů s předdefinovanými přístupovými granty. Viděli jsme také příklady vytváření uživatelů s různými autorizačními mechanismy, různým nastavením hesla, možnostmi vypršení platnosti atd.
Doporučené čtení
- Jak stáhnout MySQL pro Windows a Mac
- MySQL Create View Tutorial s příklady kódu
- MySQL Vytvoření výukové tabulky s příklady
- 31 Nejlepší databáze Testovací otázky a odpovědi na pohovor
- Výukový program pro normalizaci databáze: 1NF 2NF 3NF BCNF Příklady
- Kompletní průvodce pro testování databází (proč, co a jak testovat data)
- MongoDB Vytvořit zálohu databáze
- MongoDB Vytváření uživatelů a přiřazování rolí s příklady