mysql create user how create new user mysql
Denne vejledning forklarer MySQL Create User-kommando med forskellige autorisationsmekanismer, adgangskodestyring, ressourcebegrænsningsmuligheder osv .:
MySQL CREATE USER-kommandoen bruges til at oprette nye brugere og give detaljeret adgang til databaser / tabeller osv.
Flere personer bruger en MySQL-serverforekomst med forskellige adgangsniveauer. For eksempel, nogle brugere har læseadgang til en bestemt database, ligesom nogle kan have læse- og skriveadgang til en bestemt database osv.
CREATE USER-kommandoen bruges oftere af MySQL Admins til at oprette brugere til MySQL Server-forekomsterne og give forskellige tilladelser ved hjælp af GRANT-forespørgslen.
Hvad du lærer:
Min SQL CREATE USER-kommando
CREATE USER-kommandoen bruges til at oprette eller tilføje nye konti til MySQL-serverforekomster.
Denne kommando er generelt tilgængelig / bruges af MySQL-administratorer til at administrere adgang til forskellige brugere af MySQL Server-forekomsten.
Mens du opretter en bruger ved hjælp af kommandoen CREATE USER, kan du angive
- Godkendelse, som skal bruges, når du opretter forbindelse til MySQL.
- Ressourcegrænse
- Egenskaber for adgangskodeadministration: Udløb af adgangskode, indstillinger for genbrug af adgangskode.
- Kontolås: Nyoprettede konti vil enten være låst eller låst op.
Kontiene oprettes i MySQL-systemtabellen med navnet 'Mysql.user'
Bemærk: For at bruge kommandoen CREATE USER skal brugeren have CREATE_USER-privilegium eller indsætte tilskud til MySQL systemskema.
I den enkleste form er syntaksen for CREATE USER-kommandoen som nedenfor:
CREATE USER (IF NOT EXISTS) '{username}'@'{hostname}' IDENTIFIED BY '{passwordString}';
Bemærk det valgfri HVIS IKKE eksisterer . Dette sikrer, at hvis brugeren allerede findes, vil SQL-forespørgselsresultatet bare kaste en advarsel og ingen fejl. Her, 'Brugernavn' henviser til det faktiske brugernavn, som brugeren ville oprette forbindelse til og 'værtsnavn' henviser til den vært, hvorfra brugeren vil oprette forbindelse fra.
Bemærk venligst, hvis feltet 'værtsnavn' efterlades tomt, antages værdien for værten at være '%', hvilket gør det muligt for enhver vært at oprette forbindelse til det angivne brugernavn.
Opret en bruger med denne syntaks:
CREATE USER 'userx'@'localhost' IDENTIFIED BY 'password';
Med ovenstående udsagn har vi oprettet en bruger med brugernavnet 'userx' og adgangskoden som 'adgangskode'. Værtsnavnet er localhost, da vi opretter brugerne på vores lokale MySQL-forekomst.
Lad os prøve at forespørge tabellen mysql.users for at se posten for den bruger, vi oprettede.
SELECT * from mysql.user
Du ser output som nedenfor:
De første 4 brugere er præ-oprettet under selve MySQL-installationen, mens den sidste post er den bruger, vi har oprettet - dvs. 'userx'.
Det er vigtigt at bemærke, at vi på dette tidspunkt lige har oprettet en bruger uden at give brugeren rettigheder med hensyn til oprettelse / opdatering / forespørgsel til en database osv.
Lad os prøve at logge ind med denne bruger med MySQL-klienten.
Du kan bruge terminalen til at oprette forbindelse til nedenstående kommando:
$ /usr/local/mysql/bin/mysql -u userx -p
Når du bliver bedt om en adgangskode, skal du indtaste adgangskoden som 'adgangskode'.
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>
Nu opretter vi en ny database ved hjælp af CREATE DATABASE-nøgleordet.
mysql> create database student; ERROR 1044 (42000): Access denied for user 'userx'@'localhost' to database 'student'
Som du kan se ovenfor, er der genereret en fejlmeddelelse, der fortæller, at brugeren 'userx' ikke har adgang til at oprette DATABASE Lad os se andre muligheder, der kan bruges med CREATE USER Command.
Opret BRUGER med Auth Plugin
'Auth-plugin' angiver en godkendelsesindstilling og gemmes i plugin-kolonnen i mysql.user-tabellen. MySQL understøtter en håndfuld godkendelses-plugins.
Nogle plugins, der understøttes, er som nedenfor:
- MySQL native password hashing: Native password hashing er intet andet end at bruge SHA1 til at gemme adgangskode værdier i mysql.users tabellen. Denne mekanisme anses for at være mindre sikker end SHA1-adgangskodeshash.
- SHA2 256 adgangskodeshash: Dette er standard godkendelsesplugin, der bruges af MySQL. dvs. selvom der ikke er angivet et godkendelses-plugin med CREATE_USER-kommandoen, vil dette plugin som standard blive anvendt.
- Ekstern godkendelse ved hjælp af LDAP: LDAP bruges generelt til at forbinde MySQL-godkendelse med organisationens aktive bibliotek. For eksempel, godkendelse ved hjælp af Google SSO, OAuth eller Microsoft Outlook LDAP. Dette kræver også installation af LDAP-plugin på MySQL-siden. For flere detaljer kan du henvise her.
>> Se her for en komplet liste over understøttede plugins.
Lad os prøve at oprette en bruger med et standard auth-plugin og SHA2 auth-plugin og deres tilsvarende hashværdier i tabellen mysql.users. Først opretter vi en bruger med standardgodkendelse, som er (SHA2), og lad os se, hvad der er gemt i mysql.user bord.
CREATE USER IF NOT EXISTS 'user-default'@'localhost' IDENTIFIED BY 'P@ssw0rd'
Lad os se godkendelses-pluginet for denne bruger 'bruger-standard' i mysql.users-tabellen:
SELECT host,user,plugin,authentication_string from mysql.user where user='user-default'
Her i authentication_string kan du se dens SHA-256-værdi for adgangskodestrengen - 'P @ ssw0rd'.
Lad os nu oprette en bruger med et godkendelses-plugin. 'MySQL native password' og se, hvad der er værdien af det plugin, der bliver gemt.
bedste software til at oprette rutediagrammer
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'
Opret bruger med rolle
MySQL giver også tildeling af foruddefinerede roller til nye brugere. Disse roller har allerede en konfigureret adgang til nogle eller alle databaser (som også kan tilpasses), for eksempel, en rolle med navnet 'udvikler' kunne oprettes, som kunne tildeles alle privilegier til en database, og senere kan vi bruge den samme rolle til at tildele nye brugere.
Lad os se dette med et eksempel:
- Opret en rolle, der hedder udvikler
CREATE ROLE 'developer'
- Opret en database med navnet 'test'
CREATE DATABASE test
- Tildel privilegier til at teste database for 'udvikler' rolle
GRANT ALL ON test.* TO 'developer'
- Opret bruger og tildel udviklerrolle
CREATE USER IF NOT EXISTS 'user-with-role'@'localhost' DEFAULT ROLE developer;
- Valider brugeren kan oprette en tabel i testdatabasen
Lad os prøve at logge ind med brugeren ved navn 'bruger-med-rolle', og vi vil prøve at oprette en ny tabel i testdatabasen.
$ /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)
Opret BRUGER MED SSL / TLS
Oprettelse af en bruger med SSL / TLS-indstillinger kræver, at både klient og server har SSL-certifikater installeret. Som standard er SSL ikke konfigureret til MySQL.
Følg disse trin for at konfigurere SSL til MySQL-serverinstans.
For at oprette en bruger med SSL-aktiveret, kan du bruge indstillingen KRÆV SSL, mens du opretter brugeren.
CREATE USER 'user-with-ssl'@'localhost' REQUIRE SSL;
Tilsvarende forventer oprettelse ved hjælp af X509, at klienten / brugeren opretter forbindelse til et gyldigt X509-certifikat.
>> Se her for at forstå mere om X509.
Brug nedenstående forespørgsel for at oprette en bruger med et X509-certifikat:
CREATE USER 'user-with-x509'@'localhost' REQUIRE X509;
Opret bruger med adgangskodeadministrationsindstillinger
Adgangskodeindstillinger bruges til at indstille en politik for adgangskoden, mens du opretter en bruger ved hjælp af kommandoen Opret bruger.
# 1) Udløb adgangskoden ved login. Adgangskoden udløber efter første brug og beder brugerne om at ændre adgangskoden.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE;
#to) Udløb adgangskoden efter et fast interval. Adgangskodens udløb kan konfigureres med det konfigurerede interval, for eksempel, 90 dage.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE INTERVAL 90 DAY;
# 3) Adgangskoden låses efter konfigurerede forsøg på ny forsøg. Mange gange er det ønsket, at brugerkontoen bliver låst (i en konfigureret periode) efter 'n' forkerte forsøg på ny. I nedenstående forespørgsel låses brugerkontoen i 2 dage efter 5 forkerte forsøg.
CREATE USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 2;
# 4) Ny adgangskode skal ikke være den samme som konfigurerede tidligere adgangskoder.
I nedenstående forespørgsel bør den nye adgangskode, der er indstillet af brugerne, ikke være den samme som de sidste 2 adgangskoder.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE PASSWORD HISTORY 2;
Opret bruger med ressourcebegrænsningsindstillinger
Ressourcegrænser kræves især til produktion af MySQL-forekomster for at undgå at få databasen overvældet af forespørgsler / anmodninger fra en enkelt bruger, og som kan påvirke MySQL-serverens ydeevne.
Vi kan indstille ressourcegrænserne ved hjælp af 3 af disse muligheder nedenfor:
# 1) MAX_QUERIES_PER_HOUR - Antal tilladte få forespørgsler for en given bruger pr. Time.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_QUERIES_PER_HOUR 5
Antag, at hvis brugeren forsøger at overstige mere end 5 forespørgsler i timen, ville MySQL-serveren kaste en fejl som nedenfor:
ERROR 1226 (42000): User 'user-with-resource-limits' has exceeded the 'max_questions' resource (current value: 5)
# 2) MAX_UPDATES_PER_HOUR - Antal opdateringsforespørgsler, der er tilladt for en given bruger pr. Time.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 50
# 3) MAX_CONNECTIONS_PER_HOUR - Antallet af gange, en konto kan oprette forbindelse til serveren pr. Time.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 50
# 4) MAX_USER_CONNECTIONS - Antallet af samtidige forbindelser til MySQL-serverinstansen fra den givne bruger.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_USER_CONNECTIONS 50
Bemærk, at alle ovenstående muligheder også kan kombineres, mens du opretter en bruger. Antag, at hvis vi vil specificere MAX_QUERIES som 10 og MAX_UPDATES som 100, så kan vi have en enkelt CREATE_USER-forespørgsel som:
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 100 MAX_QUERIES_PER_HOUR 10
MySQL opdatering og sletning af brugere
MySQL indeholder 2 vigtige kommandoer - ALTER USER og DROP USER til henholdsvis at ændre og slette eksisterende brugere. Lad os forstå begge disse ved hjælp af eksempler.
ALTER BRUGER
MySQL ALTER USER bruges til at opdatere / ændre eksisterende MySQL-brugerkonti. Det kan bruges til,
- Opdater ressourcegrænser
- Indstil adgangskodeindstillinger
- Lås og låse konti osv.
Lad os se et eksempel på brug af ALTER USER til at låse op for en låst konto.
Opret en bruger i en låst tilstand, og lås den derefter op med ALTER USER-kommandoen.
CREATE USER 'test'@'localhost'I DENTIFIED BY 'Password' ACCOUNT LOCK;
Nu, når vi logger ind med denne bruger, får vi en meddelelse om låst konto (da brugeren blev oprettet i en låst kontotilstand).
$ /usr/local/mysql/bin/mysql -u test -p Enter password: ERROR 3118 (HY000): Access denied for user 'test'@'localhost'. Account is locked.
Brug nedenstående forespørgsel til at låse brugeren op med ALTER-kommandoen.
ALTER USER 'test'@'localhost' ACCOUNT UNLOCK
Log ind med brugeren med MySQL-klienten:
$ /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 BRUGER
MySQL DROP USER-kommando fjerner en eller flere eksisterende brugere og alle deres tilknyttede privilegier og tilskud.
Bemærk, at det ikke fjerner / sletter data indsat / tabeller oprettet eller opdateret af brugeren, som bliver slettet.
Hvis nogen forsøger at slette en ikke-eksisterende bruger, vil kommandoen DROP USER kaste en fejl.
Lad os oprette en bruger og slette den ved hjælp af DROP-kommandoen:
CREATE USER 'test'@'localhost'; DROP USER 'test'@'localhost';
Ofte stillede spørgsmål
Q # 1) Hvad er en bruger i MySQL?
Svar: Bruger i MySQL er en konto / enhed, der kan logge på MySQL-serverinstans og udføre forskellige handlinger. En bruger kan tildeles rollebaseret adgang eller granulær adgang til en eller flere databaser og / eller tabeller.
Spørgsmål nr. 2) Hvordan kontrolleres forskellige brugere, der er forbundet til MySQL?
Svar: For at se de aktive brugersessioner på en MySQL-serverforekomst kan du køre proceslistekommando som nedenfor.
SHOW processlist;
Outputtet fra denne kommando vil vise forskellige attributter for den aktive brugers sessioner forbundet på tidspunktet for kommandokørsel.
Prøveoutput nedenfor:
Spørgsmål nr. 3) Hvordan skifter jeg brugere i MySQL?
Svar: MySQL arbejder på begrebet brugersessioner. Når du er logget ind med en given bruger, kan du enten planlægge at afslutte sessionen eller åbne en session mod en ny bruger i et nyt vindue eller som en ny forbindelse i MySQL GUI-klienter som en arbejdsbænk.
For at logge ind med en bestemt bruger fra mysql-klienten kan du bruge nedenstående syntaks:
mysql -u {userName} -p
Når du har skrevet ovenstående kommando, bliver du bedt om at indtaste adgangskoden til den bruger, der er angivet i feltet {brugernavn}, når du først har trykket på Enter. Når adgangskoden er valideret, føres du til MySQL shell / kommandoprompt.
For at logge ind med en separat bruger, du kan afslutte den aktuelle session ved at indtaste kommandoen exit og logge på igen med en anden bruger.
mysql> exit
Det er også muligt at have flere forbindelser til MySQL-serverinstanserne for forskellige brugere. Du kan blot åbne et nyt faneblad / vindue til kommandoprompten og bruge den samme kommando til at logge ind med en anden bruger.
mysql -u {userName2} -p
Spørgsmål nr. 4) Hvordan får man en MySQL-bruger til at være skrivebeskyttet?
Svar: MySQL giver en udtømmende mekanisme til at give detaljeret adgang til databaser eller tabeller. Du kan give forskellige former for adgang som SELECT, UPDATE, INSERT osv. Til en eller flere databaser eller tabeller.
For at give en bruger kun skrivebeskyttet adgang, kan du give SELECT adgang til en database (ved hjælp af * til alle tabeller eller eksplicit nævne tabelnavn efter krav)
Lad os forstå dette ved hjælp af et eksempel nedenfor:
Vi opretter en bruger ved navn 'readaccess' med adgangskode som 'Password'
create user 'readaccess'@'localhost' IDENTIFIED BY 'Password'
Giv nu læseadgang til alle tabellerne i en database med navnet 'test' ved hjælp af GRANT-nøgleordet i MySQL
grant select on test.* to 'readaccess'@'localhost'
For at validere adgangen kan du nu logge ind med denne bruger ved navn 'readaccess' og prøve at spørge tabellerne inde i databasens 'test'.
Men hvis du prøver at indsætte data i en af tabellerne i testdatabasen, får du en fejl nægtet adgang, da vi udtrykkeligt netop har tildelt læseadgang til denne bruger.
Spørgsmål nr. 5) Hvordan kan jeg se brugere i MySQL?
Svar: MySQL har en systemniveau-tabel med navnet 'mysql.user', som indeholder en liste over alle de brugere, der er oprettet til MySQL-serverinstansen. Rettighederne til denne tabel er generelt begrænset til root- eller admin-brugere eller nogen, der administrerer godkendelse og autorisation til MySQL-serverinstansen.
Spørgsmål nr. 6) Hvordan finder jeg MySQL-brugerens navn og adgangskode?
Svar: MySQL-bruger- og adgangskodetilknytningen er gemt i systemtabellen ‘mysql.user’, som er en adgangsbegrænset tabel. Adgangskoden gemmes i krypteret format afhængigt af den krypteringstilstand, der blev valgt under brugeroprettelsen.
Men hvis en persons konto er låst, leverer MySQL en anden kommando kaldet ALTER USER, som kan bruges til at låse op for en given brugerkonto.
Konklusion
I denne vejledning lærte vi om MySQL CREATE USER-kommandoen, der generelt bruges til godkendelse og adgangsstyring af databaseadministratorer.
MySQL leverer mange kraftfulde godkendelsesmekanismer og rollebaserede opgaver, der gør det muligt at oprette nye brugere med foruddefinerede adgangsstipendier. Vi så også eksempler på oprettelse af brugere med forskellige autorisationsmekanismer, forskellige adgangskodeindstillinger, udløbsindstillinger osv.
Anbefalet læsning
- Sådan downloades MySQL til Windows og Mac
- MySQL Opret visningsvejledning med kodeeksempler
- MySQL Opret tabelvejledning med eksempler
- 31 Top Database Testing Interview Spørgsmål og svar
- Database Normalisering Tutorial: 1NF 2NF 3NF BCNF Eksempler
- Komplet guide til databasetest (hvorfor, hvad og hvordan man tester data)
- MongoDB Opret sikkerhedskopi af database
- MongoDB Opret bruger og tildel roller med eksempler