mysql create user how create new user mysql
Tento tutoriál vysvetľuje príkaz MySQL Create User s rôznymi autorizačnými mechanizmami, správou hesiel, možnosťami obmedzenia zdrojov atď.:
Príkaz MySQL CREATE USER sa používa na vytváranie nových používateľov a na granulárny prístup k databázam / tabuľkám atď.
Inštanciu servera MySQL používa viac ľudí s rôznymi úrovňami prístupu. Napríklad, niektorí používatelia majú prístup na čítanie do konkrétnej databázy, podobne môžu mať niektorí prístup na čítanie a zápis do konkrétnej databázy atď.
Príkaz CREATE USER je správcami MySQL častejšie používaný na vytváranie používateľov inštancií servera MySQL a na prideľovanie rôznych povolení pomocou dotazu GRANT.
Čo sa dozviete:
- Môj príkaz SQL CREATE USER
- Záver
Môj príkaz SQL CREATE USER
Príkaz CREATE USER sa používa na vytváranie alebo pridávanie nových účtov do inštancií servera MySQL.
Tento príkaz je všeobecne prístupný / používajú ho správcovia MySQL na správu prístupu k rôznym používateľom inštancie MySQL Server.
Pri vytváraní používateľa pomocou príkazu CREATE USER môžete určiť
- Autentifikácia, ktorá by sa mala použiť pri pripájaní k MySQL.
- Limit zdrojov
- Vlastnosti správy hesiel: Vypršanie platnosti hesla, nastavenie opätovného použitia hesla.
- Uzamknutie účtu: Novo vytvorené účty by boli uzamknuté alebo odomknuté.
Účty sa vytvárajú v systémovej tabuľke MySQL s názvom ‘Mysql.user’
Poznámka: Ak chcete použiť príkaz CREATE USER, používateľ by mal mať privilégium CREATE_USER alebo oprávnenie vložiť MySQL systémová schéma.
V najjednoduchšej forme je syntax príkazu CREATE USER nasledovná:
CREATE USER (IF NOT EXISTS) '{username}'@'{hostname}' IDENTIFIED BY '{passwordString}';
Všimnite si voliteľné AK NEEXISTUJE . To zaisťuje, že ak používateľ už existuje, výsledok dotazu SQL spôsobí iba varovanie a žiadnu chybu. Tu, „Používateľské meno“ odkazuje na skutočné používateľské meno, ku ktorému by sa používateľ pripojil a 'meno hosťa' označuje hostiteľa, z ktorého by sa používateľ pripojil.
Vezmite prosím na vedomie, ak je pole „hostname“ nevyplnené, potom sa predpokladá, že hodnota pre hostiteľa je „%“, čo by umožnilo každému hostiteľovi pripojiť sa k uvedenému používateľskému menu.
Vytvorte používateľa s touto syntaxou:
CREATE USER 'userx'@'localhost' IDENTIFIED BY 'password';
Pomocou vyššie uvedeného vyhlásenia sme vytvorili používateľa s používateľským menom „userx“ a heslom ako „heslo“. Názov hostiteľa je localhost, pretože vytvárame používateľov v našej lokálnej inštancii MySQL.
Skúsme zadať dotaz do tabuľky mysql.users, aby sme videli záznam pre používateľa, ktorého sme vytvorili.
SELECT * from mysql.user
Uvidíte výstup uvedený nižšie:
Prví 4 používatelia sú vopred vytvorení počas samotnej inštalácie MySQL, zatiaľ čo posledným záznamom je používateľ, ktorého sme vytvorili, teda „userx“.
Je dôležité poznamenať, že v tomto okamihu sme práve vytvorili používateľa bez toho, aby sme mu poskytli akékoľvek práva v súvislosti s vytváraním / aktualizáciou / dotazovaním na databázu atď.
Skúsme sa prihlásiť s týmto používateľom pomocou klienta MySQL.
Na pripojenie pomocou terminálu môžete použiť nasledujúci príkaz:
$ /usr/local/mysql/bin/mysql -u userx -p
Po zobrazení výzvy na zadanie hesla zadajte heslo ako „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>
Teraz vytvoríme novú databázu pomocou kľúčového slova CREATE DATABASE.
ako zobraziť súbor .dat
mysql> create database student; ERROR 1044 (42000): Access denied for user 'userx'@'localhost' to database 'student'
Ako vidíte vyššie, vygeneruje sa chybové hlásenie, ktoré informuje, že používateľ „userx“ nemá prístup na vytvorenie DATABÁZY. Pozrime sa na ďalšie možnosti, ktoré by sa dali použiť s príkazom CREATE USER.
VYTVORTE UŽÍVATEĽA s doplnkom Auth
„Auth plugin“ špecifikuje možnosť autentifikácie & je uložený v stĺpci pluginu v tabuľke mysql.user. MySQL podporuje niekoľko autentifikačných doplnkov.
Niektoré podporované doplnky sú uvedené nižšie:
- Natívne hashovanie hesla MySQL: Natívne hašovanie hesiel nie je nič iné, ako použitie SHA1 na ukladanie hodnôt hesla do tabuľky mysql.users. Tento mechanizmus sa považuje za menej bezpečný ako hashovanie hesla SHA1.
- SHA2 256 hashovanie hesla: Toto je predvolený overovací doplnok používaný serverom MySQL. tj. aj keď nie je zadaný žiadny overovací doplnok pomocou príkazu CREATE_USER, štandardne by sa tento doplnok použil.
- Externé overovanie pomocou protokolu LDAP: LDAP sa zvyčajne používa na prepojenie autentifikácie MySQL s aktívnym adresárom organizácie. Napríklad, autentifikácia pomocou protokolu Google SSO, OAuth alebo Microsoft Outlook LDAP. To si vyžaduje inštaláciu doplnku LDAP aj na strane MySQL. Ďalšie informácie nájdete na tu.
>> Refer tu kompletný zoznam podporovaných doplnkov.
Skúsme vytvoriť používateľa s predvoleným doplnkom auth a doplnkom SHA2 auth a ich zodpovedajúcimi hašovanými hodnotami v tabuľke mysql.users. Najskôr vytvoríme používateľa s predvolenou autentifikáciou, ktorá je (SHA2), a pozrime sa, čo je v nej uložené mysql.user stôl.
CREATE USER IF NOT EXISTS 'user-default'@'localhost' IDENTIFIED BY 'P@ssw0rd'
Pozrime sa na doplnok na overenie totožnosti tohto používateľa „user-default“ v tabuľke mysql.users:
SELECT host,user,plugin,authentication_string from mysql.user where user='user-default'
Tu v časti authentication_string môžete vidieť jej hodnotu SHA-256 pre reťazec hesla - „P @ ssw0rd“.
Teraz vytvorme používateľa pomocou doplnku na overenie totožnosti. „Natívne heslo MySQL“ a uvidíte, aká je hodnota doplnku, ktorý sa 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'
VYTVORIŤ POUŽÍVATEĽA pomocou roly
MySQL tiež poskytuje priradenie preddefinovaných rolí novým používateľom. Tieto role už majú nakonfigurovaný prístup k niektorým alebo všetkým databázam (ktoré je tiež možné prispôsobiť), napríklad, je možné vytvoriť rolu s názvom „vývojár“, ktorej je možné priradiť všetky privilégiá k databáze a neskôr môžeme rovnakú rolu priradiť novým používateľom.
Pozrime sa na príklad:
- Vytvorte rolu s názvom vývojár
CREATE ROLE 'developer'
- Vytvorte databázu s názvom „test“
CREATE DATABASE test
- Priraďte oprávnenie na testovanie databázy pre rolu „vývojára“
GRANT ALL ON test.* TO 'developer'
- Vytvorte používateľa a priraďte rolu vývojára
CREATE USER IF NOT EXISTS 'user-with-role'@'localhost' DEFAULT ROLE developer;
- Overte, či používateľ môže vytvoriť tabuľku v testovacej databáze
Skúsme sa prihlásiť s používateľom menom „user-with-role“ a pokúsime sa vytvoriť novú tabuľku v testovacej databáze.
$ /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)
VYTVORTE UŽÍVATEĽA pomocou protokolu SSL / TLS
Vytvorenie používateľa s voľbami SSL / TLS by vyžadovalo, aby mal klient aj server nainštalované certifikáty SSL. SSL nie je štandardne nakonfigurovaný pre MySQL.
Postupujte podľa týchto pokynov krokov nakonfigurovať SSL pre inštanciu servera MySQL.
Ak chcete vytvoriť používateľa s povoleným protokolom SSL, môžete pri vytváraní používateľa použiť voľbu VYŽADOVAŤ SSL.
CREATE USER 'user-with-ssl'@'localhost' REQUIRE SSL;
Podobne by sa pri vytváraní pomocou X509 očakávalo, že sa klient / používateľ pripojí, aby mal platný certifikát X509.
>> Refer tu pochopiť viac o X509.
Ak chcete vytvoriť používateľa s certifikátom X509, použite nasledujúci dotaz:
CREATE USER 'user-with-x509'@'localhost' REQUIRE X509;
VYTVORTE UŽÍVATEĽA s možnosťami správy hesiel
Možnosti hesla sa používajú na nastavenie politiky pre Heslo pri vytváraní používateľa pomocou príkazu CREATE USER.
# 1) Platnosť hesla pri prihlásení vyprší. Platnosť hesla vyprší po prvom použití a vyzve používateľov na zmenu hesla.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE;
#dva) Platnosť hesla vyprší po stanovenom intervale. Vypršanie hesla je možné nakonfigurovať v nakonfigurovanom intervale, napríklad, 90 dní.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE INTERVAL 90 DAY;
# 3) Heslo sa uzamkne po nakonfigurovaných pokusoch o opakovanie. Mnohokrát je žiaduce, aby bol používateľský účet uzamknutý (na nakonfigurované obdobie) po nesprávnych pokusoch o opakovanie. V nasledujúcom dotaze by sa používateľský účet uzamkol na 2 dni po 5 nesprávnych pokusoch.
CREATE USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 2;
# 4) Nové heslo by nemalo byť rovnaké ako nakonfigurované predchádzajúce heslá.
V nasledujúcom dotaze by nové heslo nastavené používateľom nemalo byť rovnaké ako posledné 2 heslá.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE PASSWORD HISTORY 2;
VYTVORTE UŽÍVATEĽA s možnosťami obmedzenia zdrojov
Obmedzenia zdrojov sú potrebné najmä pre produkčné inštancie MySQL, aby sa zabránilo zahlteniu databázy dotazmi / požiadavkami od jedného používateľa a čo by mohlo mať vplyv na výkon servera MySQL.
Limity zdrojov môžeme nastaviť pomocou ktorejkoľvek z týchto 3 možností:
# 1) MAX_QUERIES_PER_HOUR - Počet povolených dotazov na získanie pre daného používateľa za hodinu.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_QUERIES_PER_HOUR 5
Predpokladajme, že ak sa používateľ pokúsi prekročiť viac ako 5 dopytov za hodinu, server MySQL by spôsobil chybu, ako je uvedené nižšie:
ERROR 1226 (42000): User 'user-with-resource-limits' has exceeded the 'max_questions' resource (current value: 5)
# 2) MAX_UPDATES_PER_HOUR - Počet povolených aktualizačných dotazov pre daného používateľa za hodinu.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 50
# 3) MAX_CONNECTIONS_PER_HOUR - Počet pripojení účtu k serveru za hodinu.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 50
# 4) MAX_USER_CONNECTIONS - Počet súčasných pripojení k inštancii servera MySQL od daného používateľa.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_USER_CONNECTIONS 50
Upozorňujeme, že všetky vyššie uvedené možnosti je možné kombinovať aj pri vytváraní používateľa. Predpokladajme, že ak chceme zadať MAX_QUERIES ako 10 a MAX_UPDATES ako 100, potom môžeme mať jeden dotaz CREATE_USER ako:
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 100 MAX_QUERIES_PER_HOUR 10
Aktualizácia a mazanie používateľov MySQL
MySQL poskytuje 2 dôležité príkazy - ALTER USER a DROP USER na úpravu a odstránenie existujúcich používateľov. Poďme si obe tieto príklady predstaviť.
ZMENIŤ POUŽÍVATEĽA
MySQL ALTER USER sa používa na aktualizáciu / úpravu existujúcich užívateľských účtov MySQL. Dá sa na to zvyknúť,
- Aktualizujte limity zdrojov
- Nastaviť možnosti hesla
- Zamknutie a odomknutie účtov atď.
Pozrime sa na príklad použitia ALTER USER na odomknutie uzamknutého účtu.
Vytvorte používateľa v uzamknutom stave a potom ho odomknite príkazom ALTER USER.
CREATE USER 'test'@'localhost'I DENTIFIED BY 'Password' ACCOUNT LOCK;
Teraz sa po prihlásení s týmto používateľom zobrazí správa o uzamknutí účtu (pretože používateľ bol vytvorený v stave uzamknutého účtu).
$ /usr/local/mysql/bin/mysql -u test -p Enter password: ERROR 3118 (HY000): Access denied for user 'test'@'localhost'. Account is locked.
Pomocou nasledujúceho dotazu odomknete používateľa príkazom ALTER.
ALTER USER 'test'@'localhost' ACCOUNT UNLOCK
Prihláste sa pomocou používateľa pomocou 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ŽÍVATEĽ
Príkaz MySQL DROP USER odstráni jedného alebo viacerých existujúcich používateľov a všetky s nimi spojené oprávnenia a granty.
Upozorňujeme, že neodstráni ani neodstráni žiadne vložené údaje / tabuľky vytvorené alebo aktualizované používateľom, ktoré sa odstraňujú.
Ak sa niekto pokúsi vymazať neexistujúceho používateľa, príkaz DROP USER by spôsobil chybu.
Vytvorme používateľa a odstráňte ho pomocou príkazu DROP:
CREATE USER 'test'@'localhost'; DROP USER 'test'@'localhost';
často kladené otázky
Otázka č. 1) Čo je používateľ v MySQL?
Odpoveď: Používateľ v MySQL je účet / entita, ktorá sa môže prihlásiť na inštanciu servera MySQL a vykonávať rôzne operácie. Používateľovi môže byť priradený prístup na základe rolí alebo granulárny prístup k jednej alebo viacerým databázam a / alebo tabuľkám.
Otázka 2) Ako skontrolovať rôznych používateľov pripojených k MySQL?
Odpoveď: Ak chcete vidieť aktívne relácie používateľa na inštancii servera MySQL, môžete spustiť príkaz processlist, ako je uvedené nižšie.
SHOW processlist;
Výstup tohto príkazu by zobrazoval rôzne atribúty relácií aktívneho používateľa pripojených v čase vykonania príkazu.
Ukážkový výstup nižšie:
Otázka č. 3) Ako môžem zmeniť používateľov v MySQL?
Odpoveď: MySQL pracuje na koncepcii používateľských relácií. Po prihlásení s daným používateľom môžete naplánovať ukončenie relácie alebo otvorenie relácie proti novému používateľovi v novom okne alebo ako nové pripojenie v klientoch MySQL GUI, napríklad ako pracovný stôl.
Na prihlásenie s konkrétnym používateľom z klienta mysql môžete použiť nasledujúcu syntax:
mysql -u {userName} -p
Po napísaní vyššie uvedeného príkazu sa po stlačení klávesu Enter zobrazí výzva na zadanie hesla pre používateľa uvedeného v poli {userName}. Po overení hesla sa dostanete na shell / príkazový riadok MySQL.
Ak sa chcete prihlásiť pomocou samostatného používateľa, aktuálnu reláciu môžete ukončiť zadaním príkazu ukončenia a opätovným prihlásením s iným používateľom.
mysql> exit
Je tiež možné mať viac pripojení k inštanciám servera MySQL pre rôznych používateľov. Môžete jednoducho otvoriť novú kartu / okno príkazového riadku a použiť ten istý príkaz na prihlásenie s iným používateľom.
mysql -u {userName2} -p
Otázka č. 4) Ako vytvoriť používateľa MySQL iba na čítanie?
Odpoveď: MySQL poskytuje vyčerpávajúci mechanizmus na udelenie granulárneho prístupu k databázam alebo tabuľkám. K jednej alebo mnohým databázam alebo tabuľkám môžete poskytnúť rôzne druhy prístupu, ako napríklad VÝBER, AKTUALIZÁCIA, VLOŽENIE atď.
Ak chcete používateľovi poskytnúť prístup iba na čítanie, môžete udeliť prístup SELECT k databáze (pomocou * pre všetky tabuľky alebo výslovným uvedením názvu tabuľky podľa požiadavky)
Poďme to pochopiť pomocou nasledujúceho príkladu:
Vytvárame používateľa s názvom „readaccess“, ktorý má heslo ako „Heslo“
create user 'readaccess'@'localhost' IDENTIFIED BY 'Password'
Teraz poskytnite prístup na čítanie všetkým tabuľkám databázy s názvom „test“ pomocou kľúčového slova GRANT v MySQL
grant select on test.* to 'readaccess'@'localhost'
Teraz, aby ste overili prístup, sa môžete prihlásiť pomocou tohto používateľa s menom „readaccess“ a pokúsiť sa vyhľadať tabuľky v databáze „test“.
Ak sa však pokúsite vložiť údaje do ktorejkoľvek z tabuliek vo vnútri testovacej databázy, zobrazí sa vám chyba odmietnutia prístupu, pretože sme tomuto používateľovi výslovne udelili prístup na čítanie.
Otázka č. 5) Ako vidím používateľov v MySQL?
Odpoveď: MySQL má tabuľku na úrovni systému s názvom „mysql.user“, ktorá obsahuje zoznam všetkých používateľov, ktorí sú vytvorení pre inštanciu servera MySQL. Oprávnenia k tejto tabuľke sú všeobecne obmedzené na používateľov root alebo admin alebo na niekoho, kto spravuje autentifikáciu a autorizáciu pre inštanciu servera MySQL.
Otázka č. 6) Ako zistiť meno a heslo používateľa MySQL?
Odpoveď: Mapovanie používateľov a hesiel MySQL je uložené v systémovej tabuľke „mysql.user“, čo je tabuľka s obmedzeným prístupom. Heslo je uložené v šifrovanom formáte v závislosti od režimu šifrovania, ktorý bol zvolený počas vytvárania používateľa.
Ak je však účet niekoho uzamknutý, MySQL poskytuje ďalší príkaz s názvom ALTER USER, pomocou ktorého je možné daný používateľský účet odomknúť.
Záver
V tomto tutoriáli sme sa dozvedeli o príkaze MySQL CREATE USER, ktorý sa používa na autentifikáciu a správu prístupu všeobecne administrátormi databázy.
MySQL poskytuje veľa výkonných autentifikačných mechanizmov a priradení na základe rolí, ktoré umožňujú vytváranie nových používateľov pomocou vopred definovaných prístupových grantov. Videli sme tiež príklady vytvárania používateľov s rôznymi autorizačnými mechanizmami, rôznymi nastaveniami hesla, možnosťami uplynutia platnosti atď.
Odporúčané čítanie
- Ako sťahovať MySQL pre Windows a Mac
- Výukový program na vytvorenie prehľadu MySQL s príkladmi kódu
- MySQL Vytvorenie výučby tabuľky s príkladmi
- 31 Najlepšie otázky z testovania databázy, otázky a odpovede
- Výukový program pre normalizáciu databázy: Príklady 1NF 2NF 3NF BCNF
- Kompletný sprievodca testovaním databázy (prečo, čo a ako testovať údaje)
- MongoDB Vytvorenie zálohy databázy
- MongoDB Vytvorte používateľa a priraďte úlohy s príkladmi