mysql create user how create new user mysql
Denne opplæringen forklarer MySQL Create User-kommando med forskjellige autorisasjonsmekanismer, passordadministrasjon, ressursbegrensningsalternativer, etc:
MySQL CREATE USER-kommandoen brukes til å opprette nye brukere og gi detaljert tilgang til databaser / tabeller, etc.
Flere bruker en MySQL-serverforekomst, med forskjellige tilgangsnivåer. For eksempel, noen brukere har lesetilgang til en bestemt database, på samme måte kan noen ha lese- og skrivetilgang til en bestemt database, etc.
CREATE USER-kommandoen brukes oftere av MySQL Admins for å opprette brukere for MySQL Server-forekomster og gi forskjellige tillatelser ved hjelp av GRANT-spørringen.
Hva du vil lære:
Min SQL CREATE USER-kommando
CREATE USER-kommandoen brukes til å opprette eller legge til nye kontoer i MySQL-serverforekomster.
Denne kommandoen er generelt tilgjengelig / brukes av MySQL-administratorer for å administrere tilgang til forskjellige brukere av MySQL Server-forekomsten.
Mens du oppretter en bruker ved hjelp av CREATE USER-kommandoen, kan du spesifisere
- Autentisering, som skal brukes når du kobler til MySQL.
- Ressursgrense
- Egenskaper for passordadministrasjon: passordutløp, innstillinger for passordbruk.
- Kontolås: Nyopprettede kontoer vil enten være låst eller ulåst.
Kontoer opprettes i MySQL-systemtabellen med navnet ‘Mysql.user’
Merk: For å bruke CREATE USER-kommandoen, bør brukeren ha CREATE_USER-privilegium eller sette inn tilskudd for MySQL systemskjema.
I den enkleste formen er syntaksen for CREATE USER-kommandoen som nedenfor:
CREATE USER (IF NOT EXISTS) '{username}'@'{hostname}' IDENTIFIED BY '{passwordString}';
Legg merke til det valgfrie HVIS IKKE eksisterer . Dette sikrer at hvis brukeren allerede er, vil SQL-spørringsresultatet bare kaste en advarsel og ingen feil. Her, ‘Brukernavn’ refererer til det faktiske brukernavnet som brukeren vil koble seg til og 'Vertsnavn' refererer til verten som brukeren vil koble seg fra.
hvilken sertifisering av programvaretesting som er den beste
Vær oppmerksom på hvis 'vertsnavn' -feltet er tomt, antas verdien for verten å være '%' som vil tillate enhver vert å koble seg til det angitte brukernavnet.
Opprett en bruker med denne syntaksen:
CREATE USER 'userx'@'localhost' IDENTIFIED BY 'password';
Med ovenstående utsagn har vi opprettet en bruker med brukernavnet ‘userx’ og passord som ‘passord’. Vertsnavnet er localhost når vi oppretter brukere på vår lokale MySQL-forekomst.
La oss prøve å spørre tabellen mysql.users for å se oppføringen for brukeren vi opprettet.
SELECT * from mysql.user
Du ser utdataene som nedenfor:
De første 4 brukerne er forhåndsopprettet under selve MySQL-installasjonen mens den siste oppføringen er brukeren vi har opprettet - dvs. ‘userx’.
Det er viktig å merke seg at vi akkurat nå har opprettet en bruker uten å gi noen rettigheter til brukeren når det gjelder å opprette / oppdatere / spørre om en database etc.
La oss prøve å logge på med denne brukeren med MySQL-klienten.
Du kan bruke terminalen til å koble til kommandoen nedenfor:
$ /usr/local/mysql/bin/mysql -u userx -p
Når du blir bedt om et passord, skriver du inn passordet som ‘passord’.
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>
Nå skal vi opprette en ny database ved hjelp av søkeordet CREATE DATABASE.
mysql> create database student; ERROR 1044 (42000): Access denied for user 'userx'@'localhost' to database 'student'
Som du kan se ovenfor, genereres det en feilmelding som forteller at brukeren 'userx' ikke har tilgang til å opprette DATABASE La oss se andre alternativer som kan brukes med CREATE USER Command.
OPPRETT BRUKER Med Auth Plugin
‘Auth plugin’ spesifiserer et autentiseringsalternativ og lagres i plugin-kolonnen i mysql.user-tabellen. MySQL støtter en håndfull godkjenningsplugins.
Noen plugins som støttes er som nedenfor:
- MySQL native passord hashing: Innfødt passordhashing er ikke annet enn å bruke SHA1 til å lagre passordverdier i mysql.users-tabellen. Denne mekanismen anses å være mindre sikker enn SHA1-passordhashing.
- SHA2 256 passordhashing: Dette er standard godkjenningsplugin som brukes av MySQL. dvs. selv om ingen godkjenningsplugin er spesifisert med CREATE_USER-kommandoen, vil dette pluginet som standard brukes.
- Ekstern autentisering ved bruk av LDAP: LDAP brukes vanligvis til å koble MySQL-autentisering til organisasjonens aktive katalog. For eksempel, autentisering ved hjelp av Google SSO, OAuth eller Microsoft Outlook LDAP. Dette krever også installasjon av LDAP-plugin på MySQL-siden. For mer informasjon, kan du henvise her.
>> Se her for en komplett liste over støttede plugins.
La oss prøve å opprette en bruker med en standard auth-plugin og SHA2 auth-plugin og tilhørende hashverdier i mysql.users-tabellen. Først vil vi opprette en bruker med standardautentisering, som er (SHA2), og la oss se hva som er lagret i mysql.user bord.
CREATE USER IF NOT EXISTS 'user-default'@'localhost' IDENTIFIED BY 'P@ssw0rd'
La oss se godkjenningsprogrammet for denne brukeren 'bruker-standard' i tabellen mysql.users:
SELECT host,user,plugin,authentication_string from mysql.user where user='user-default'
Her i authentication_string kan du se SHA-256-verdien for passordstrengen - ‘P @ ssw0rd’.
La oss nå opprette en bruker med et autentiseringsprogramtillegg. ‘MySQL native password’ og se hva som er verdien av pluginet som blir lagret.
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'
OPPRETT BRUKER Med rolle
MySQL gir også tildeling av forhåndsdefinerte roller til nye brukere. Disse rollene har allerede konfigurert tilgang til noen eller alle databaser (som også kan tilpasses), for eksempel, en rolle kalt ‘utvikler’ kan opprettes som kan tildeles alle rettigheter til en database, og senere kan vi bruke den samme rollen til å tildele nye brukere.
La oss se dette med et eksempel:
- Opprett en rolle som heter utvikler
CREATE ROLE 'developer'
- Opprett en database med navnet 'test'
CREATE DATABASE test
- Tildel privilegier for å teste databasen for utviklerrollen
GRANT ALL ON test.* TO 'developer'
- Opprett bruker og tilordne utviklerrolle
CREATE USER IF NOT EXISTS 'user-with-role'@'localhost' DEFAULT ROLE developer;
- Valider brukeren kan opprette en tabell i testdatabasen
La oss prøve å logge inn med brukeren som heter ‘bruker-med-rolle’, og vi vil prøve å lage en ny tabell 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)
OPPRETT BRUKER Med SSL / TLS
Hvis du oppretter en bruker med SSL / TLS-alternativer, må både klient og server ha SSL-sertifikater installert. Som standard er SSL ikke konfigurert for MySQL.
Følg disse trinn for å konfigurere SSL for MySQL-serverforekomst.
For å opprette en bruker med SSL aktivert, kan du bruke KREV SSL-alternativet mens du oppretter brukeren.
CREATE USER 'user-with-ssl'@'localhost' REQUIRE SSL;
På samme måte forventer du at klienten / brukeren skal koble til å ha et gyldig X509-sertifikat ved å bruke X509.
>> Se her for å forstå mer om X509.
For å opprette en bruker med et X509-sertifikat, bruk spørringen nedenfor:
CREATE USER 'user-with-x509'@'localhost' REQUIRE X509;
OPPRETT BRUKER Med passordadministrasjonsalternativer
Passordalternativer brukes til å angi policy for passordet mens du oppretter en bruker ved hjelp av CREATE USER-kommandoen.
#1) Utløp passordet ved pålogging. Passordet utløper etter første gangs bruk og ber brukerne om å endre passordet.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE;
#to) Utløp passordet etter et fast intervall. Passordutløp kan konfigureres med det konfigurerte intervallet, for eksempel, 90 dager.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE INTERVAL 90 DAY;
# 3) Passordet blir låst etter konfigurerte forsøk på nytt. Mange ganger er det ønskelig at brukerkontoen låses (i en konfigurert periode) etter ‘n’ feil forsøk på nytt. I spørringen nedenfor vil brukerkontoen bli låst i to dager etter 5 feilforsøk.
CREATE USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 2;
# 4) Nytt passord skal ikke være det samme som konfigurerte tidligere passord.
I spørringen nedenfor bør det nye passordet som er angitt av brukerne, ikke være det samme som de to siste passordene.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE PASSWORD HISTORY 2;
OPPRETT BRUKER Med ressursbegrensningsalternativer
Ressursgrenser er nødvendig spesielt for produksjon av MySQL-forekomster for å unngå å få databasen overveldet av spørsmål / forespørsler fra en enkelt bruker, og som kan påvirke ytelsen til MySQL-serveren.
Vi kan angi ressursgrensene ved å bruke 3 av disse alternativene nedenfor:
# 1) MAX_QUERIES_PER_HOUR - Antall tillatte spørsmål som er tillatt for en gitt bruker per time.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_QUERIES_PER_HOUR 5
Anta at hvis brukeren prøver å overstige mer enn fem spørsmål per time, vil MySQL-serveren kaste en feil som nedenfor:
ERROR 1226 (42000): User 'user-with-resource-limits' has exceeded the 'max_questions' resource (current value: 5)
# 2) MAX_UPDATES_PER_HOUR - Antall oppdateringsspørsmål tillatt for en gitt bruker per time.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 50
# 3) MAX_CONNECTIONS_PER_HOUR - Antall ganger en konto kan koble seg til serveren per time.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 50
# 4) MAX_USER_CONNECTIONS - Antallet samtidige tilkoblinger til MySQL-serverinstansen fra den gitte brukeren.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_USER_CONNECTIONS 50
Vær oppmerksom på at alle alternativene ovenfor også kan kombineres mens du oppretter en bruker. Anta at hvis vi vil spesifisere MAX_QUERIES som 10 og MAX_UPDATES som 100, kan vi ha et enkelt CREATE_USER-spørsmål som:
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 100 MAX_QUERIES_PER_HOUR 10
MySQL oppdaterer og sletter brukere
MySQL inneholder to viktige kommandoer - ALTER USER og DROP USER for å modifisere og slette henholdsvis eksisterende brukere. La oss forstå begge disse ved hjelp av eksempler.
ALTER BRUKER
MySQL ALTER USER brukes til å oppdatere / endre eksisterende MySQL brukerkontoer. Den kan brukes til,
- Oppdater ressursgrenser
- Angi passordalternativer
- Lås og låse opp kontoer osv.
La oss se et eksempel på bruk av ALTER USER til å låse opp en låst konto.
Opprett en bruker i en låst tilstand og lås den opp med ALTER USER-kommandoen.
CREATE USER 'test'@'localhost'I DENTIFIED BY 'Password' ACCOUNT LOCK;
Nå, når vi logger på med denne brukeren, får vi en konto-låst melding (ettersom brukeren ble opprettet 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.
Bruk spørringen nedenfor for å låse opp brukeren med ALTER-kommandoen.
ALTER USER 'test'@'localhost' ACCOUNT UNLOCK
Logg på med brukeren 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 BRUKER
MySQL DROP USER-kommando fjerner en eller flere eksisterende brukere og alle deres tilknyttede privilegier og tilskudd.
Vær oppmerksom på at det ikke vil fjerne / slette data som er satt inn / tabeller opprettet eller oppdatert av brukeren, som blir slettet.
Hvis noen prøver å slette en ikke-eksisterende bruker, vil DROP USER-kommandoen kaste en feil.
La oss opprette en bruker og slette den ved hjelp av DROP-kommandoen:
CREATE USER 'test'@'localhost'; DROP USER 'test'@'localhost';
ofte stilte spørsmål
Q # 1) Hva er en bruker i MySQL?
Svar: Bruker i MySQL er en konto / enhet som kan logge på MySQL-serverinstansen og utføre forskjellige operasjoner. En bruker kan tildeles rollebasert tilgang eller detaljert tilgang til en eller flere databaser og / eller tabeller.
Q # 2) Hvordan sjekker forskjellige brukere som er koblet til MySQL?
Svar: For å se de aktive brukersesjonene på en MySQL-serverforekomst, kan du kjøre prosesslistekommandoen som nedenfor.
SHOW processlist;
Utgangen av denne kommandoen vil vise forskjellige attributter for den aktive brukerens økter som er koblet til på tidspunktet for utførelse av kommandoen.
Eksempel på utdata nedenfor:
Sp # 3) Hvordan bytter jeg brukere i MySQL?
Svar: MySQL jobber med konseptet med brukerøkter. Når du er logget på med en gitt bruker, kan du enten planlegge å avslutte økten eller åpne en økt mot en ny bruker i et nytt vindu eller som en ny forbindelse i MySQL GUI-klienter som en arbeidsbenk.
For å logge på med en bestemt bruker fra mysql-klienten kan du bruke syntaksen nedenfor:
mysql -u {userName} -p
Når du har skrevet kommandoen ovenfor, blir du bedt om å angi passordet for brukeren som er angitt i feltet {userName} når du trykker på Enter. Når passordet er validert, blir du ført til MySQL shell / ledetekst.
For å logge på med en egen bruker, Du kan avslutte den gjeldende økten ved å angi avslutningskommandoen og logge på igjen med en annen bruker.
mysql> exit
Det er også mulig å ha flere tilkoblinger til MySQL-serverinstansene for forskjellige brukere. Du kan ganske enkelt åpne en ny fane / vindu for ledeteksten og bruke den samme kommandoen for å logge på med en annen bruker.
mysql -u {userName2} -p
Spørsmål nr. 4) Hvordan lage en MySQL-bruker skrivebeskyttet?
Svar: MySQL gir en uttømmende mekanisme for å gi detaljert tilgang til databaser eller tabeller. Du kan tilby forskjellige typer tilgang som SELECT, UPDATE, INSERT, etc til en eller flere databaser eller tabeller.
For å gi bare skrivebeskyttet tilgang til en bruker, kan du gi SELECT tilgang til en database (ved hjelp av * for alle tabeller eller eksplisitt å nevne tabellnavnet som per krav)
La oss forstå dette ved hjelp av et eksempel nedenfor:
Vi oppretter en bruker som heter 'readaccess' med passord som 'Password'
create user 'readaccess'@'localhost' IDENTIFIED BY 'Password'
Gi nå lesetilgang til alle tabellene i en database kalt 'test' ved å bruke GRANT-nøkkelordet i MySQL
grant select on test.* to 'readaccess'@'localhost'
Nå, for å validere tilgangen, kan du logge inn med denne brukeren som heter 'readaccess' og prøve å spørre tabellene i databasen 'test'.
Imidlertid, hvis du prøver å sette inn data til noen av tabellene i testdatabasen, vil du få en tilgang nektet feil da vi eksplisitt nettopp har gitt lesetilgang til denne brukeren.
Sp # 5) Hvordan ser jeg brukere i MySQL?
Svar: MySQL har en systemnivå-tabell med navnet ‘mysql.user’ som inneholder en liste over alle brukerne som er opprettet for MySQL-serverforekomsten. Rettighetene til denne tabellen er vanligvis begrenset til root- eller admin-brukere eller noen som administrerer godkjenning og autorisasjon for MySQL-serverforekomsten.
Spørsmål nr. 6) Hvordan finner jeg MySQL-brukerens navn og passord?
Svar: MySQL-bruker- og passordtilordningene lagres i systemtabellen ‘mysql.user’, som er en tilgangsbegrenset tabell. Passordet lagres i kryptert format, avhengig av krypteringsmodus som ble valgt under brukeropprettelsen.
Imidlertid, hvis noens konto er låst, gir MySQL en annen kommando kalt ALTER USER, som kan brukes til å låse opp en gitt brukerkonto.
Konklusjon
I denne opplæringen lærte vi om MySQL CREATE USER-kommandoen, som vanligvis brukes til autentisering og tilgangsadministrasjon av databaseadministratorer.
MySQL gir mange kraftige autentiseringsmekanismer og rollebaserte oppgaver som gjør det mulig å opprette nye brukere med forhåndsdefinerte tilgangstilskudd. Vi så også eksempler for å opprette brukere med forskjellige autorisasjonsmekanismer, forskjellige passordinnstillinger, utløpsalternativer, etc.
Anbefalt lesing
- Hvordan laste ned MySQL for Windows og Mac
- MySQL Lag visningsveiledning med kodeeksempler
- MySQL Lag tabellveiledning med eksempler
- 31 Topp Database Testing Intervju Spørsmål og svar
- Database Normalisering Opplæring: 1NF 2NF 3NF BCNF Eksempler
- Fullstendig guide for databasetesting (hvorfor, hva og hvordan du tester data)
- MongoDB Lag sikkerhetskopi av database
- MongoDB Opprett bruker og tildel roller med eksempler