mysql create user how create new user mysql
Acest tutorial explică comanda MySQL Create User cu diferite mecanisme de autorizare, gestionarea parolei, opțiuni de limitare a resurselor, etc:
Comanda MySQL CREATE USER este utilizată pentru a crea noi utilizatori și pentru a acorda acces granular la baze de date / tabele etc.
Mai multe persoane folosesc o instanță de server MySQL, având niveluri de acces diferite. De exemplu, unii utilizatori au acces de citire la o anumită bază de date, în mod similar, unii pot avea acces la citire-scriere la o anumită bază de date etc.
Comanda CREATE USER este mai frecvent utilizată de administratorii MySQL pentru a crea utilizatori pentru instanțele MySQL Server și pentru a acorda permisiuni diferite utilizând interogarea GRANT.
Ce veți învăța:
Comanda mea SQL CREATE USER
Comanda CREATE USER este utilizată pentru a crea sau a adăuga conturi noi la instanțele serverului MySQL.
Această comandă este în general accesibilă / este utilizată de administratorii MySQL pentru a gestiona accesul la diferiți utilizatori ai instanței MySQL Server.
În timp ce creați un utilizator utilizând comanda CREATE USER, puteți specifica
- Autentificare, care ar trebui utilizată la conectarea la MySQL.
- Limita resurselor
- Proprietăți de gestionare a parolei: expirarea parolei, setări de reutilizare a parolei.
- Blocarea conturilor: conturile nou create vor fi fie blocate, fie deblocate.
Conturile sunt create în tabelul de sistem MySQL numit „Mysql.user”
Notă: Pentru a utiliza comanda CREATE USER, utilizatorul ar trebui să aibă privilegiul CREATE_USER sau să insereze grant pentru MySQL schema de sistem.
În cea mai simplă formă, sintaxa pentru comanda CREATE USER este următoarea:
CREATE USER (IF NOT EXISTS) '{username}'@'{hostname}' IDENTIFIED BY '{passwordString}';
Observați opționalul DACĂ NU EXISTĂ . Acest lucru asigură că, dacă utilizatorul este deja existent, rezultatul interogării SQL va arunca doar un avertisment și nu va exista nicio eroare. Aici, 'nume de utilizator' se referă la numele de utilizator cu care utilizatorul s-ar conecta și „Nume de gazdă” se referă la gazda de la care utilizatorul s-ar conecta.
Vă rugăm să rețineți, dacă câmpul „nume de gazdă” este lăsat necompletat, atunci valoarea pentru gazdă este presupusă a fi „%”, ceea ce ar permite oricărei gazde să se conecteze cu numele de utilizator specificat.
Creați un utilizator cu această sintaxă:
CREATE USER 'userx'@'localhost' IDENTIFIED BY 'password';
Cu declarația de mai sus, am creat un utilizator cu numele de utilizator „userx” și parola ca „parolă”. Numele gazdei este localhost, deoarece creăm utilizatorii în instanța noastră locală MySQL.
Să încercăm să interogăm tabelul mysql.users pentru a vedea intrarea pentru utilizatorul pe care l-am creat.
SELECT * from mysql.user
Veți vedea rezultatul după cum urmează:
Primii 4 utilizatori sunt precreați în timpul instalării MySQL, în timp ce ultima intrare este utilizatorul pe care l-am creat - adică „userx”.
Este important de reținut că în acest moment tocmai am creat un utilizator fără a acorda drepturi utilizatorului în ceea ce privește crearea / actualizarea / interogarea unei baze de date etc.
Să încercăm să ne conectăm cu acest utilizator cu clientul MySQL.
Puteți utiliza terminalul pentru a vă conecta cu comanda de mai jos:
$ /usr/local/mysql/bin/mysql -u userx -p
Când vi se solicită o parolă, introduceți parola ca „parolă”.
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>
Acum, vom crea o nouă bază de date utilizând cuvântul cheie CREATE DATABASE.
mysql> create database student; ERROR 1044 (42000): Access denied for user 'userx'@'localhost' to database 'student'
După cum puteți vedea mai sus, există un mesaj de eroare generat care spune că utilizatorul „userx” nu are acces pentru a crea BAZA DE DATE Să vedem alte opțiuni care ar putea fi utilizate cu comanda CREATE USER.
CREAȚI UTILIZATORULUI Cu Auth Plugin
„Auth plugin” specifică o opțiune de autentificare și este stocat în coloana plugin din tabelul mysql.user. MySQL acceptă o mână de pluginuri de autentificare.
Unele plugin-uri acceptate sunt cele de mai jos:
- Hashing parolă nativă MySQL: Hashingul de parolă nativ nu este altceva decât utilizarea SHA1 pentru a stoca valorile parolei în tabelul mysql.users. Acest mecanism este considerat a fi mai puțin sigur decât hash-ul parolei SHA1.
- SHA2 256 hash de parolă: Acesta este pluginul de autentificare implicit utilizat de MySQL. adică chiar dacă nu este specificat niciun plugin de autentificare cu comanda CREATE_USER, implicit acest plugin ar fi aplicat.
- Autentificare externă utilizând LDAP: LDAP este utilizat în general pentru conectarea autentificării MySQL la directorul activ al organizației. De exemplu, autentificare utilizând Google SSO, OAuth sau Microsoft Outlook LDAP. Acest lucru necesită instalarea pluginului LDAP și pe partea MySQL. Pentru mai multe detalii, puteți consulta Aici.
>> Consultați Aici pentru o listă completă a pluginurilor acceptate.
Să încercăm să creăm un utilizator cu un plugin de autentificare implicit și un plugin de autentificare SHA2 și valorile lor hash corespunzătoare în tabelul mysql.users. Mai întâi, vom crea un utilizator cu autentificare implicită, care este (SHA2) și ne va permite să vedem ce este stocat în mysql.user masa.
CREATE USER IF NOT EXISTS 'user-default'@'localhost' IDENTIFIED BY 'P@ssw0rd'
Să vedem pluginul de autentificare pentru acest utilizator „user-default” în tabelul mysql.users:
SELECT host,user,plugin,authentication_string from mysql.user where user='user-default'
Aici, în autentificare_string, puteți vedea valoarea SHA-256 pentru șirul de parole - „P @ ssw0rd”.
Să creăm acum un utilizator cu un plugin de autentificare. „Parola nativă MySQL” și vedeți care este valoarea pluginului care este stocat.
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'
CREAȚI UTILIZATOR Cu rol
MySQL oferă, de asemenea, atribuirea de roluri predefinite noilor utilizatori. Aceste roluri au deja un acces configurat la unele sau la toate bazele de date (care ar putea fi personalizate și ele), de exemplu, s-ar putea crea un rol numit „dezvoltator” căruia i s-ar putea atribui toate privilegiile unei baze de date și ulterior putem folosi același rol pentru a atribui noilor utilizatori.
Să vedem acest lucru cu un exemplu:
- Creați un rol numit dezvoltator
CREATE ROLE 'developer'
- Creați o bază de date numită „test”
CREATE DATABASE test
- Atribuiți privilegii pentru a testa baza de date pentru rolul de „dezvoltator”
GRANT ALL ON test.* TO 'developer'
- Creați un utilizator și atribuiți rolul de dezvoltator
CREATE USER IF NOT EXISTS 'user-with-role'@'localhost' DEFAULT ROLE developer;
- Validați utilizatorul poate crea un tabel în baza de date de testare
Să încercăm să ne conectăm cu utilizatorul numit „utilizator-cu-rol” și vom încerca să creăm un nou tabel în baza de date de testare.
$ /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)
CREAȚI UTILIZATOR Cu SSL / TLS
Crearea unui utilizator cu opțiuni SSL / TLS ar necesita atât clientul, cât și serverul să aibă certificate SSL instalate. În mod implicit, SSL nu este configurat pentru MySQL.
Urmați-le pași pentru a configura SSL pentru instanța serverului MySQL.
Pentru a crea un utilizator cu SSL activat, puteți utiliza opțiunea CERERE SSL în timp ce creați utilizatorul.
CREATE USER 'user-with-ssl'@'localhost' REQUIRE SSL;
În mod similar, crearea utilizând X509 s-ar aștepta ca clientul / utilizatorul să se conecteze pentru a avea un certificat X509 valid.
>> Consultați Aici pentru a înțelege mai multe despre X509.
tehnici de testare a cutiei albe cu exemple
Pentru a crea un utilizator cu un certificat X509, utilizați interogarea de mai jos:
CREATE USER 'user-with-x509'@'localhost' REQUIRE X509;
CREAȚI UTILIZATOR Cu opțiuni de gestionare a parolei
Opțiunile de parolă sunt folosite pentru a seta politica privind parola în timp ce creați un utilizator utilizând comanda CREATE USER.
# 1) Expiră parola la conectare. Parola este expirată după prima utilizare și solicită utilizatorilor să schimbe parola.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE;
#Două) Expiră parola după un interval fix. Expirarea parolei poate fi configurată cu intervalul configurat, de exemplu, 90 de zile.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE INTERVAL 90 DAY;
# 3) Parola se blochează după încercările de reîncercare configurate. De multe ori, se dorește ca contul de utilizator să fie blocat (pentru o perioadă configurată) după încercări incorecte de reîncercare „n”. În interogarea de mai jos, contul de utilizator va fi blocat timp de 2 zile după 5 încercări incorecte.
CREATE USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 2;
# 4) Parola nouă nu trebuie să fie aceeași cu parolele anterioare configurate.
În interogarea de mai jos, noua parolă setată de utilizatori nu ar trebui să fie aceeași cu ultimele 2 parole.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE PASSWORD HISTORY 2;
CREAȚI UTILIZATOR cu opțiuni de limitare a resurselor
Limitele de resurse sunt necesare în special pentru instanțele MySQL de producție, astfel încât să evitați ca baza de date să fie copleșită de interogări / solicitări de la un singur utilizator și care ar putea afecta performanța serverului MySQL.
Putem seta limitele resurselor utilizând oricare dintre aceste trei opțiuni de mai jos:
# 1) MAX_QUERIES_PER_HOUR - Numărul de interogări de primire permise pentru un anumit utilizator pe oră.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_QUERIES_PER_HOUR 5
Să presupunem că dacă utilizatorul încearcă să depășească mai mult de 5 interogări pe oră, serverul MySQL ar arunca o eroare ca mai jos:
ERROR 1226 (42000): User 'user-with-resource-limits' has exceeded the 'max_questions' resource (current value: 5)
# 2) MAX_UPDATES_PER_HOUR - Numărul de interogări de actualizare permise pentru un anumit utilizator pe oră.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 50
# 3) MAX_CONNECTIONS_PER_HOUR - De câte ori un cont se poate conecta la server pe oră.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 50
# 4) MAX_USER_CONNECTIONS - Numărul de conexiuni simultane cu instanța serverului MySQL de la utilizatorul dat.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_USER_CONNECTIONS 50
Vă rugăm să rețineți că toate opțiunile de mai sus ar putea fi, de asemenea, combinate în timpul creării unui utilizator. Să presupunem că dacă dorim să specificăm MAX_QUERIES ca 10 și MAX_UPDATES ca 100, atunci putem avea o singură interogare CREATE_USER ca:
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 100 MAX_QUERIES_PER_HOUR 10
Actualizați MySQL și ștergeți utilizatorii
MySQL oferă 2 comenzi importante - ALTER USER și DROP USER pentru a modifica și șterge respectiv utilizatorii existenți. Să le înțelegem pe ambele folosind exemple.
ALTERAȚI UTILIZATORUL
MySQL ALTER USER este utilizat pentru a actualiza / modifica conturile de utilizator MySQL existente. Poate fi folosit pentru,
- Actualizați limitele resurselor
- Setați opțiunile de parolă
- Blocați și deblocați conturi etc.
Să vedem un exemplu de utilizare a ALTER USER pentru a debloca un cont blocat.
Creați un utilizator într-o stare blocată și apoi deblocați-l cu comanda ALTER USER.
CREATE USER 'test'@'localhost'I DENTIFIED BY 'Password' ACCOUNT LOCK;
Acum, la conectarea cu acest utilizator, vom primi un mesaj blocat de cont (deoarece utilizatorul a fost creat într-o stare de cont blocat).
$ /usr/local/mysql/bin/mysql -u test -p Enter password: ERROR 3118 (HY000): Access denied for user 'test'@'localhost'. Account is locked.
Utilizați interogarea de mai jos pentru deblocarea utilizatorului cu comanda ALTER.
ALTER USER 'test'@'localhost' ACCOUNT UNLOCK
Conectați-vă cu utilizatorul cu clientul 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 USER
Comanda MySQL DROP USER elimină unul sau mai mulți utilizatori existenți și toate privilegiile și granturile asociate acestora.
Rețineți că nu va șterge / șterge niciun fel de date inserate / tabele create sau actualizate de utilizator, care sunt șterse.
Dacă cineva încearcă să șteargă un utilizator inexistent, comanda DROP USER ar genera o eroare.
Să creăm un utilizator și să-l ștergem folosind comanda DROP:
CREATE USER 'test'@'localhost'; DROP USER 'test'@'localhost';
întrebări frecvente
Q # 1) Ce este un utilizator în MySQL?
Răspuns: Utilizatorul din MySQL este un cont / entitate care se poate conecta la instanța serverului MySQL și poate efectua operațiuni diferite. Unui utilizator i se poate atribui acces bazat pe roluri sau acces granular la una sau mai multe baze de date și / sau tabele.
Q # 2) Cum să verificați diferiți utilizatori conectați la MySQL?
Răspuns: Pentru a vedea sesiunile de utilizator active pe o instanță de server MySQL, puteți rula comanda listă de proces, după cum urmează.
SHOW processlist;
Ieșirea acestei comenzi va afișa diferite atribute ale sesiunilor utilizatorului activ conectate în momentul executării comenzii.
Eșantion de ieșire de mai jos:
Î # 3) Cum pot schimba utilizatorii în MySQL?
Răspuns: MySQL funcționează pe conceptul de sesiuni de utilizator. Când sunteți conectat cu un anumit utilizator, puteți planifica fie să încheiați sesiunea, fie să deschideți o sesiune împotriva unui nou utilizator într-o fereastră nouă sau ca o nouă conexiune în clienții MySQL GUI, cum ar fi un banc de lucru.
Pentru a vă conecta cu un anumit utilizator de la clientul mysql puteți utiliza sintaxa de mai jos:
mysql -u {userName} -p
După ce scrieți comanda de mai sus, odată ce apăsați Enter, vi se va solicita să introduceți parola pentru utilizatorul specificat în câmpul {userName}. Odată validată parola, veți fi direcționat la shell-ul MySQL / promptul de comandă.
Pentru a vă conecta cu un utilizator separat, puteți termina sesiunea curentă introducând comanda de ieșire și reconectați-vă cu un alt utilizator.
mysql> exit
De asemenea, este posibil să aveți mai multe conexiuni la instanțele serverului MySQL pentru diferiți utilizatori. Puteți deschide pur și simplu o nouă filă / fereastră pentru promptul de comandă și puteți utiliza aceeași comandă pentru a vă conecta cu un alt utilizator.
mysql -u {userName2} -p
Q # 4) Cum să faci un utilizator MySQL numai în citire?
Răspuns: MySQL oferă un mecanism exhaustiv pentru a acorda acces granular la baze de date sau tabele. Puteți oferi diferite tipuri de acces, cum ar fi SELECT, UPDATE, INSERT etc. la una sau mai multe baze de date sau tabele.
Pentru a acorda acces doar în citire unui utilizator, puteți acorda acces SELECT la o bază de date (folosind * pentru toate tabelele sau menționând în mod explicit numele tabelului conform cerințelor)
Să înțelegem acest lucru cu ajutorul unui exemplu de mai jos:
Creăm un utilizator numit „readaccess” care are parola „Password”
create user 'readaccess'@'localhost' IDENTIFIED BY 'Password'
Acum, acordați acces de citire la toate tabelele unei baze de date numite „test” utilizând cuvântul cheie GRANT în MySQL
grant select on test.* to 'readaccess'@'localhost'
Acum, pentru a valida accesul, vă puteți conecta cu acest utilizator numit „readaccess” și puteți încerca interogarea tabelelor din baza de date „test”.
Cu toate acestea, dacă încercați să inserați date în oricare dintre tabelele din baza de date de testare, atunci veți primi o eroare de acces refuzat, deoarece am acordat în mod explicit accesul de citire acestui utilizator.
Q # 5) Cum văd utilizatorii în MySQL?
Răspuns: MySQL are un tabel la nivel de sistem numit „mysql.user” care conține o listă cu toți utilizatorii care sunt creați pentru instanța serverului MySQL. Privilegiile acestui tabel sunt, în general, limitate la utilizatorii root sau admin sau la cineva care gestionează autentificarea și autorizarea instanței serverului MySQL.
Q # 6) Cum să găsiți numele și parola utilizatorului MySQL?
Răspuns: Cartografierea utilizatorului și a parolei MySQL este stocată în tabelul de sistem „mysql.user”, care este un tabel cu acces restricționat. Parola este stocată în format criptat în funcție de modul de criptare care a fost ales în timpul creării utilizatorului.
Cu toate acestea, dacă contul cuiva este blocat, MySQL oferă o altă comandă numită ALTER USER, care poate fi utilizată pentru deblocarea unui anumit cont de utilizator.
Concluzie
În acest tutorial, am aflat despre comanda MySQL CREATE USER, care este utilizată pentru autentificare și gestionarea accesului în general de către administratorii bazei de date.
MySQL oferă o mulțime de mecanisme puternice de autentificare și atribuiri bazate pe roluri, care permit crearea de noi utilizatori cu granturi de acces predefinite. De asemenea, am văzut exemple pentru crearea de utilizatori cu mecanisme de autorizare diferite, setări de parole diferite, opțiuni de expirare etc.
Lectură recomandată
- Cum se descarcă MySQL pentru Windows și Mac
- Tutorial MySQL Create View cu exemple de cod
- Tutorial MySQL Create Table cu exemple
- 31 Întrebări și răspunsuri de top pentru testarea bazei de date
- Tutorial de normalizare a bazei de date: Exemple 1NF 2NF 3NF BCNF
- Ghid complet de testare a bazei de date (de ce, ce și cum se testează datele)
- MongoDB Creați o copie de rezervă a bazei de date
- MongoDB Creează utilizator și atribuie roluri cu exemple