mysql create user how create new user mysql
Ovaj vodič objašnjava naredbu MySQL Create User s različitim mehanizmima autorizacije, upravljanjem lozinkom, opcijama ograničenja resursa itd.:
Naredba MySQL CREATE USER koristi se za stvaranje novih korisnika i odobrenje granuliranog pristupa bazama podataka / tablicama itd.
Više ljudi koristi instancu MySQL poslužitelja s različitim razinama pristupa. Na primjer, neki korisnici imaju pristup za čitanje određenoj bazi podataka, slično, neki mogu imati pristup za čitanje i pisanje određenoj bazi podataka, itd.
Naredbu CREATE USER češće koriste MySQL administratori za stvaranje korisnika za instance MySQL poslužitelja i dodjeljivanje različitih dozvola pomoću upita GRANT.
Što ćete naučiti:
- Moja naredba SQL CREATE USER
- Zaključak
Moja naredba SQL CREATE USER
Naredba CREATE USER koristi se za stvaranje ili dodavanje novih računa u instance MySQL poslužitelja.
Ova je naredba općenito dostupna / koriste je MySQL administratori za upravljanje pristupom različitim korisnicima instance MySQL poslužitelja.
Tijekom stvaranja korisnika pomoću naredbe CREATE USER možete odrediti
- Autentifikacija, koju treba koristiti prilikom povezivanja na MySQL.
- Ograničenje resursa
- Svojstva upravljanja lozinkom: Istek lozinke, postavke ponovne upotrebe lozinke.
- Zaključavanje računa: Novostvoreni računi bit će zaključani ili otključani.
Računi se kreiraju u MySQL sistemskoj tablici pod nazivom 'Mysql.user'
Bilješka: Da bi koristio naredbu CREATE USER, korisnik bi trebao imati CREATE_USER privilegiju ili umetnuti odobrenje za MySQL shema sustava.
U najjednostavnijem obliku, sintaksa naredbe CREATE USER je sljedeća:
CREATE USER [IF NOT EXISTS] '{username}'@'{hostname}' IDENTIFIED BY '{passwordString}';
Primijetite neobavezno AKO NE POSTOJI . To osigurava da će, ako korisnik već postoji, rezultat SQL upita samo izbaciti upozorenje i bez pogreške. Ovdje, 'Korisničko ime' odnosi se na stvarno korisničko ime s kojim bi se korisnik povezao i 'Ime hosta' odnosi se na hosta s kojeg bi se korisnik povezao.
Molim Zabilježite, ako polje „ime hosta“ ostane prazno, tada se pretpostavlja da je vrijednost za hosta „%“ što bi bilo kojem hostu omogućilo povezivanje s navedenim korisničkim imenom.
Stvorite korisnika s ovom sintaksom:
alati za popravak i optimizaciju računala 10
CREATE USER 'userx'@'localhost' IDENTIFIED BY 'password';
Gornjom izjavom stvorili smo korisnika s korisničkim imenom ‘userx’ i lozinkom kao ‘lozinkom’. Ime hosta je localhost jer stvaramo korisnike na našoj lokalnoj MySQL instanci.
Pokušajmo upitati tablicu mysql.users da bismo vidjeli unos za korisnika kojeg smo stvorili.
SELECT * from mysql.user
Izlaz ćete vidjeti kao ispod:
Prva 4 korisnika su unaprijed kreirana tijekom same instalacije MySQL-a, dok je posljednji unos korisnik kojeg smo stvorili - tj. ‘Userx’.
Važno je napomenuti da smo u ovom trenutku upravo stvorili korisnika bez davanja bilo kakvih prava korisniku u smislu stvaranja / ažuriranja / postavljanja upita u bazu podataka itd.
Pokušajmo se prijaviti s ovim korisnikom pomoću MySQL klijenta.
Pomoću terminala možete se povezati naredbom u nastavku:
$ /usr/local/mysql/bin/mysql -u userx -p
Kada se od vas zatraži da unesete lozinku, unesite je kao 'lozinka'.
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>
Sada ćemo stvoriti novu bazu podataka pomoću ključne riječi CREATE DATABASE.
mysql> create database student; ERROR 1044 (42000): Access denied for user 'userx'@'localhost' to database 'student'
Kao što vidite gore, generira se poruka o pogrešci koja govori da korisnik 'userx' nema pristup stvaranju BAZE PODATAKA Pogledajmo druge opcije koje bi se mogle koristiti s naredbom CREATE USER.
STVORI KORISNIKA pomoću dodatka za autorizaciju
‘Auth dodatak’ navodi opciju provjere autentičnosti i pohranjuje se u stupac dodatka tablice mysql.user. MySQL podržava pregršt dodataka za provjeru autentičnosti.
Neki od podržanih dodataka su sljedeći:
- Miširanje matične lozinke MySQL: Hesiranje matične lozinke nije ništa drugo nego korištenje SHA1 za spremanje vrijednosti lozinki u tablicu mysql.users. Ovaj se mehanizam smatra manje sigurnim od raspršivanja lozinke SHA1.
- SHA2 256 raspršivanje lozinke: Ovo je zadani dodatak za provjeru autentičnosti koji koristi MySQL. tj. čak i ako nijedan dodatak za provjeru autentičnosti nije naveden s naredbom CREATE_USER, prema zadanim postavkama taj bi se dodatak primijenio.
- Vanjska provjera autentičnosti pomoću LDAP-a: LDAP se obično koristi za povezivanje MySQL provjere autentičnosti s aktivnim direktorijom organizacije. Na primjer, autentičnost pomoću Google SSO, OAuth ili Microsoft Outlook LDAP. To zahtijeva instalaciju LDAP dodatka i na MySQL strani. Za više detalja možete se obratiti ovdje.
>> Pogledajte ovdje za potpuni popis podržanih dodataka.
Pokušajmo stvoriti korisnika sa zadanim dodatkom auth i SHA2 auth dodatkom i njihovim odgovarajućim raspršenim vrijednostima u tablici mysql.users. Prvo ćemo stvoriti korisnika sa zadanom provjerom autentičnosti, koji je (SHA2), i dopustiti nam da vidimo što je pohranjeno u mysql.korisnik stol.
CREATE USER IF NOT EXISTS 'user-default'@'localhost' IDENTIFIED BY 'P@ssw0rd'
Pogledajmo dodatak za provjeru autentičnosti ovog korisnika 'user-default' u tablici mysql.users:
SELECT host,user,plugin,authentication_string from mysql.user where user='user-default'
Ovdje u authentication_string možete vidjeti njegovu SHA-256 vrijednost za niz lozinke - ‘P @ ssw0rd’.
Stvorimo sada korisnika s dodatkom za provjeru autentičnosti. ‘MySQL rodna lozinka’ i pogledajte kolika je vrijednost dodatka koji se pohranjuje.
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'
STVORI KORISNIKA s ulogom
MySQL također omogućuje dodjeljivanje unaprijed definiranih uloga novim korisnicima. Te uloge već imaju konfigurirani pristup nekim ili svim bazama podataka (koje se također mogu prilagoditi), na primjer, mogla bi se stvoriti uloga pod nazivom 'programer' koja bi mogla dodijeliti sve privilegije bazi podataka, a kasnije istu ulogu možemo koristiti za dodjeljivanje novim korisnicima.
Pogledajmo ovo na primjeru:
- Stvorite ulogu pod nazivom programer
CREATE ROLE 'developer'
- Stvorite bazu podataka pod nazivom 'test'
CREATE DATABASE test
- Dodijelite privilegije testnoj bazi podataka za ulogu 'programera'
GRANT ALL ON test.* TO 'developer'
- Stvorite korisnika i dodijelite ulogu programera
CREATE USER IF NOT EXISTS 'user-with-role'@'localhost' DEFAULT ROLE developer;
- Potvrdite da korisnik može stvoriti tablicu u test bazi podataka
Pokušajmo se prijaviti s korisnikom nazvanim ‘korisnik-s-ulogom’, a mi ćemo pokušati stvoriti novu tablicu u testnoj bazi podataka.
razlika između ispitivanja dima i ispitivanja razuma
$ /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)
STVORI KORISNIKA SSL / TLS-om
Stvaranje korisnika s SSL / TLS opcijama zahtijevalo bi da i klijent i poslužitelj imaju instalirane SSL certifikate. Prema zadanim postavkama SSL nije konfiguriran za MySQL.
Slijedite ove stepenice za konfiguriranje SSL-a za instancu MySQL poslužitelja.
Da biste stvorili korisnika s omogućenim SSL-om, tijekom izrade korisnika možete upotrijebiti opciju REQUIRE SSL.
CREATE USER 'user-with-ssl'@'localhost' REQUIRE SSL;
Slično tome, stvaranje pomoću X509 očekivalo bi da se klijent / korisnik poveže s valjanim X509 certifikatom.
>> Pogledajte ovdje kako biste razumjeli više o X509.
Da biste stvorili korisnika s certifikatom X509, upotrijebite upit u nastavku:
CREATE USER 'user-with-x509'@'localhost' REQUIRE X509;
STVORITE KORISNIKA s opcijama upravljanja lozinkom
Opcije lozinke koriste se za postavljanje pravila za lozinku tijekom stvaranja korisnika pomoću naredbe CREATE USER.
# 1) Ističe lozinka za prijavu. Lozinka istječe nakon prve upotrebe i od korisnika se traži da promijene lozinku.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE;
#dva) Isteče lozinka nakon određenog intervala. Istek lozinke može se konfigurirati s konfiguriranim intervalom, na primjer, 90 dana.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE INTERVAL 90 DAY;
# 3) Lozinka se zaključava nakon konfiguriranih pokušaja ponovnog pokušaja. Puno puta je poželjno da se korisnički račun zaključa (na konfigurirano razdoblje) nakon 'n' pogrešnih pokušaja ponovnog pokušaja. U upitu u nastavku, korisnički račun će se zaključati na 2 dana nakon 5 netočnih pokušaja.
CREATE USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 2;
# 4) Nova lozinka ne smije biti ista kao konfigurirana prethodna lozinka.
U upitu u nastavku nova lozinka koju su postavili korisnici ne bi trebala biti ista kao prethodne 2 lozinke.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE PASSWORD HISTORY 2;
STVORITE KORISNIKA s opcijama ograničenja resursa
Ograničenja resursa potrebna su posebno za proizvodne MySQL instance kako bi se izbjeglo da baza podataka bude preplavljena upitima / zahtjevima jednog korisnika i što bi moglo utjecati na izvedbu MySQL poslužitelja.
Ograničenja resursa možemo postaviti pomoću bilo koje 3 od ovih opcija u nastavku:
# 1) MAX_QUERIES_PER_HOUR - Broj dopuštenih upita za određenog korisnika po satu.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_QUERIES_PER_HOUR 5
Pretpostavimo da ako korisnik pokuša premašiti više od 5 upita na sat, MySQL poslužitelj izbaciće pogrešku kao u nastavku:
ERROR 1226 (42000): User 'user-with-resource-limits' has exceeded the 'max_questions' resource (current value: 5)
# 2) MAX_UPDATES_PER_HOUR - Broj upita za ažuriranje dopušten za određenog korisnika po satu.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 50
# 3) MAX_CONNECTIONS_PER_HOUR - Koliko se puta račun može povezati s poslužiteljem na sat.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 50
# 4) MAX_USER_CONNECTIONS - Broj istodobnih veza na instancu MySQL poslužitelja od datog korisnika.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_USER_CONNECTIONS 50
Napominjemo da bi se sve gore navedene opcije mogle kombinirati i prilikom stvaranja korisnika. Pretpostavimo da ako želimo odrediti MAX_QUERIES kao 10, a MAX_UPDATES kao 100, tada možemo imati jedan upit CREATE_USER kao:
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 100 MAX_QUERIES_PER_HOUR 10
MySQL ažuriranje i brisanje korisnika
MySQL pruža dvije važne naredbe - ALTER USER i DROP USER za izmjenu i brisanje postojećih korisnika. Razumijemo obje ove primjere.
IZMJENI KORISNIKA
MySQL ALTER USER koristi se za ažuriranje / izmjenu postojećih MySQL korisničkih računa. Može se koristiti za,
- Ažurirajte ograničenja resursa
- Postavite opcije lozinke
- Zaključajte i otključajte račune itd.
Pogledajmo primjer upotrebe ALTER USER za otključavanje zaključanog računa.
Stvorite korisnika u zaključanom stanju, a zatim ga otključajte naredbom ALTER USER.
CREATE USER 'test'@'localhost'I DENTIFIED BY 'Password' ACCOUNT LOCK;
Sada, nakon prijave s ovim korisnikom, dobit ćemo poruku o zaključanom računu (jer je korisnik stvoren u zaključanom stanju računa).
$ /usr/local/mysql/bin/mysql -u test -p Enter password: ERROR 3118 (HY000): Access denied for user 'test'@'localhost'. Account is locked.
Upotrijebite upit u nastavku za otključavanje korisnika naredbom ALTER.
ALTER USER 'test'@'localhost' ACCOUNT UNLOCK
Prijavite se s korisnikom pomoću MySQL klijenta:
$ /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>
KAPI KORISNIKA
Naredba MySQL DROP USER uklanja jednog ili više postojećih korisnika i sve njihove povezane privilegije i potpore.
Imajte na umu da neće ukloniti / izbrisati podatke koji su umetnuti / tablice kreirane ili ažurirane od korisnika, a koji se brišu.
Ako netko pokuša izbrisati nepostojećeg korisnika, naredba DROP USER ispisat će pogrešku.
Stvorimo korisnika i izbrišimo ga pomoću naredbe DROP:
CREATE USER 'test'@'localhost'; DROP USER 'test'@'localhost';
Često postavljana pitanja
P # 1) Što je korisnik u MySQL-u?
Odgovor: Korisnik u MySQL-u je račun / entitet koji se može prijaviti na instancu MySQL poslužitelja i izvoditi različite operacije. Korisniku se može dodijeliti pristup temeljen na ulogama ili zrnati pristup jednoj ili više baza podataka i / ili tablica.
P # 2) Kako provjeriti različite korisnike povezane na MySQL?
Odgovor: Da biste vidjeli aktivne korisničke sesije na instanci MySQL poslužitelja, možete pokrenuti naredbu processlist kao u nastavku.
SHOW processlist;
Izlaz ove naredbe prikazivao bi različite atribute sesija aktivnog korisnika povezanih u vrijeme izvršavanja naredbe.
Primjer rezultata u nastavku:
kako otvoriti .json datoteku
P # 3) Kako mogu prebaciti korisnike u MySQL?
Odgovor: MySQL radi na konceptu korisničkih sesija. Kada ste prijavljeni s određenim korisnikom, možete planirati prekinuti sesiju ili otvoriti sesiju protiv novog korisnika u novom prozoru ili kao novu vezu u MySQL GUI klijentima poput radnog stola.
Da biste se prijavili s određenim korisnikom iz mysql klijenta, možete koristiti donju sintaksu:
mysql -u {userName} -p
Nakon pisanja gornje naredbe, nakon što pritisnete Enter, od vas će se zatražiti da unesete lozinku za korisnika navedenog u polju {userName}. Nakon potvrde lozinke, bit ćete preusmjereni na MySQL ljusku / naredbeni redak.
Da biste se prijavili s zasebnim korisnikom, možete prekinuti trenutnu sesiju unošenjem naredbe za izlaz i ponovnom prijavom s drugim korisnikom.
mysql> exit
Također je moguće imati višestruke veze s instancama MySQL poslužitelja za različite korisnike. Možete jednostavno otvoriti novu karticu / prozor za naredbeni redak i upotrijebiti istu naredbu za prijavu s drugim korisnikom.
mysql -u {userName2} -p
P # 4) Kako napraviti MySQL korisnika samo za čitanje?
Odgovor: MySQL pruža iscrpan mehanizam za dodjeljivanje detaljnog pristupa bazama podataka ili tablicama. Možete pružiti različite vrste pristupa kao što su SELECT, UPDATE, INSERT, itd. Jednoj ili više baza podataka ili tablica.
Da biste korisniku omogućili pristup samo za čitanje, možete odobriti SELECT pristup bazi podataka (koristeći * za sve tablice ili izričito spominjući naziv tablice prema zahtjevu)
Shvatimo to uz pomoć primjera u nastavku:
Stvaramo korisnika s imenom 'ponovni pristup' koji ima lozinku kao 'Lozinka'
create user 'readaccess'@'localhost' IDENTIFIED BY 'Password'
Sada odobrite pristup čitanju svim tablicama baze podataka nazvane 'test' pomoću ključne riječi GRANT u MySQL
grant select on test.* to 'readaccess'@'localhost'
Sada, da biste potvrdili pristup, možete se prijaviti s ovim korisnikom pod nazivom 'ponovni pristup' i pokušati postaviti upit u tablice u bazi podataka 'test'.
Međutim, ako pokušate umetnuti podatke u bilo koju tablicu u testnoj bazi podataka, tada ćete dobiti pogrešku zabranjenog pristupa jer smo ovom korisniku izričito upravo odobrili pristup za čitanje.
P # 5) Kako vidim korisnike u MySQL-u?
Odgovor: MySQL ima tablicu na razini sustava nazvanu ‘mysql.user’ koja sadrži popis svih korisnika stvorenih za instancu MySQL poslužitelja. Privilegije ove tablice uglavnom su ograničene na root ili administrativne korisnike ili nekoga tko upravlja provjerom autentičnosti i autorizacijom za instancu MySQL poslužitelja.
P # 6) Kako pronaći MySQL korisničko ime i lozinku?
Odgovor: Mapiranje korisnika MySQL-a i lozinke pohranjeno je u sistemsku tablicu 'mysql.user', koja je tablica s ograničenim pristupom. Lozinka se pohranjuje u šifriranom obliku, ovisno o načinu šifriranja koji je odabran tijekom izrade korisnika.
Međutim, ako je nečiji račun zaključan, MySQL pruža drugu naredbu pod nazivom ALTER USER, koja se može koristiti za otključavanje određenog korisničkog računa.
Zaključak
U ovom uputstvu saznali smo o naredbi MySQL CREATE USER, koju administratori baze podataka koriste za provjeru autentičnosti i upravljanje pristupom.
MySQL nudi mnoštvo moćnih mehanizama za provjeru autentičnosti i dodjele temeljene na ulogama koje omogućuju stvaranje novih korisnika s unaprijed definiranim pristupnim dozvolama. Također smo vidjeli primjere za stvaranje korisnika s različitim mehanizmima autorizacije, različitim postavkama lozinke, opcijama isteka itd.
Preporučena literatura
- Kako preuzeti MySQL za Windows i Mac
- MySQL Vodič za stvaranje pogleda s primjerima koda
- MySQL Vodič za izradu tablica s primjerima
- 31 Najpopularnija ispitivanja baza podataka Intervju pitanja i odgovori
- Vodič za normalizaciju baze podataka: Primjeri 1NF 2NF 3NF BCNF
- Kompletan vodič za testiranje baze podataka (Zašto, što i kako testirati podatke)
- MongoDB Stvori sigurnosnu kopiju baze podataka
- MongoDB Stvori korisnika i dodijeli uloge s primjerima