mysql create user how create new user mysql
Denna handledning förklarar MySQL Create User-kommandot med olika behörighetsmekanismer, lösenordshantering, resursbegränsningsalternativ, etc:
MySQL CREATE USER-kommandot används för att skapa nya användare och ge detaljerad åtkomst till databaser / tabeller etc.
Flera personer använder en MySQL-serverinstans med olika åtkomstnivåer. Till exempel, vissa användare har läsåtkomst till en specifik databas, på samma sätt kan vissa ha läs- och skrivåtkomst till en viss databas etc.
CREATE USER-kommandot används oftare av MySQL Admins för att skapa användare för MySQL-serverinstanser och bevilja olika behörigheter med GRANT-frågan.
Vad du kommer att lära dig:
Mitt SQL CREATE USER-kommando
CREATE USER-kommandot används för att skapa eller lägga till nya konton i MySQL-serverinstanser.
Detta kommando är allmänt tillgängligt / används av MySQL-administratörer för att hantera åtkomst till olika användare av MySQL-serverinstansen.
När du skapar en användare med kommandot CREATE USER kan du ange
- Autentisering, som ska användas när du ansluter till MySQL.
- Resursbegränsning
- Egenskaper för lösenordshantering: lösenords utgång, inställningar för återanvändning av lösenord.
- Kontolåsning: Nyskapade konton är antingen låsta eller olåsta.
Kontona skapas i MySQL-systemtabellen med namnet 'Mysql.user'
Notera: För att använda kommandot CREATE USER bör användaren ha CREATE_USER-behörighet eller infoga bidrag för MySQL systemschema.
I den enklaste formen är syntaxen för CREATE USER-kommandot enligt nedan:
CREATE USER (IF NOT EXISTS) '{username}'@'{hostname}' IDENTIFIED BY '{passwordString}';
Lägg märke till det valfria OM INTE FUNGAR . Detta säkerställer att om användaren redan finns kommer SQL-frågeresultatet bara att kasta en varning och inget fel. Här, 'Användarnamn' refererar till det faktiska användarnamnet som användaren skulle ansluta mot och 'Värdnamn' refererar till värden från vilken användaren skulle ansluta.
Vänligen notera, om fältet 'värdnamn' lämnas tomt antas värdet för värden vara '%' vilket gör att varje värd kan ansluta till det angivna användarnamnet.
Skapa en användare med denna syntax:
CREATE USER 'userx'@'localhost' IDENTIFIED BY 'password';
Med ovanstående uttalande har vi skapat en användare med användarnamnet 'userx' och lösenord som 'lösenord'. Värdnamnet är localhost när vi skapar användare på vår lokala MySQL-instans.
Låt oss försöka fråga tabellen mysql.users för att se posten för användaren vi skapade.
SELECT * from mysql.user
Du ser resultatet enligt nedan:
hur man öppnar json-filen på Windows
De första 4 användarna är förinställda under själva MySQL-installationen medan den sista posten är den användare vi har skapat - dvs. 'userx'.
Det är viktigt att notera att vi just nu har skapat en användare utan att ge några rättigheter till användaren när det gäller att skapa / uppdatera / fråga en databas etc.
Låt oss försöka logga in med den här användaren med MySQL-klienten.
Du kan använda terminalen för att ansluta till kommandot nedan:
$ /usr/local/mysql/bin/mysql -u userx -p
När du blir ombedd att ange ett lösenord anger du lösenordet som ”lösenord”.
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 skapar vi en ny databas med nyckelordet CREATE DATABASE.
mysql> create database student; ERROR 1044 (42000): Access denied for user 'userx'@'localhost' to database 'student'
Som du kan se ovan genereras ett felmeddelande som säger att användaren 'userx' inte har åtkomst till att skapa DATABAS Låt oss se andra alternativ som kan användas med CREATE USER Command.
SKAPA ANVÄNDARE med Auth-plugin
”Auth plugin” anger ett autentiseringsalternativ och lagras i plugin-kolumnen i mysql.user-tabellen. MySQL stöder en handfull autentiserings-plugins.
Några plugins som stöds är enligt nedan:
- MySQL native lösenord hashing: Inbyggt lösenordshashning är inget annat än att använda SHA1 för att lagra lösenordsvärden i tabellen mysql.users. Denna mekanism anses vara mindre säker än SHA1-lösenordshashing.
- SHA2 256 lösenordshashing: Detta är standardautentiseringsplugin som används av MySQL. det vill säga även om inget autentiseringspluggin har specificerats med CREATE_USER-kommandot, kommer detta plugin som standard att tillämpas.
- Extern autentisering med LDAP: LDAP används vanligtvis för att länka MySQL-autentisering med organisationens aktiva katalog. Till exempel, autentisering med Google SSO, OAuth eller Microsoft Outlook LDAP. Detta kräver också installation av LDAP-plugin på MySQL-sidan. För mer information kan du hänvisa här.
>> Se här för en komplett lista över plugins som stöds.
Låt oss försöka skapa en användare med ett standardautentiseringsprogram och SHA2-godkännandeprogram och deras motsvarande hashvärden i tabellen mysql.users. Först skapar vi en användare med standardautentisering, vilket är (SHA2), och låt oss se vad som är lagrat i mysql.user tabell.
CREATE USER IF NOT EXISTS 'user-default'@'localhost' IDENTIFIED BY 'P@ssw0rd'
Låt oss se autentiseringsplugin för den här användaren 'användar-standard' i tabellen mysql.users:
SELECT host,user,plugin,authentication_string from mysql.user where user='user-default'
Här i authentication_string kan du se dess SHA-256-värde för lösenordssträngen - 'P @ ssw0rd'.
Låt oss nu skapa en användare med ett autentiseringsplugin. 'MySQL native lösenord' och se vad värdet på plugin som lagras.
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'
SKAPA ANVÄNDARE Med roll
MySQL tillhandahåller också tilldelning av fördefinierade roller till nya användare. Dessa roller har redan konfigurerad åtkomst till vissa eller alla databaser (som också kan anpassas), till exempel, en roll som heter ”utvecklare” kan skapas som kan tilldelas alla behörigheter till en databas och senare kan vi använda samma roll för att tilldela nya användare.
Låt oss se detta med ett exempel:
- Skapa en roll som heter utvecklare
CREATE ROLE 'developer'
- Skapa en databas med namnet 'test'
CREATE DATABASE test
- Tilldela behörigheter för att testa databasen för rollen ”utvecklare”
GRANT ALL ON test.* TO 'developer'
- Skapa användare och tilldela utvecklarroll
CREATE USER IF NOT EXISTS 'user-with-role'@'localhost' DEFAULT ROLE developer;
- Validera användaren kan skapa en tabell i testdatabasen
Låt oss försöka logga in med användaren som heter ”användare-med-roll” och vi försöker skapa 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)
SKAPA ANVÄNDARE Med SSL / TLS
Att skapa en användare med SSL / TLS-alternativ kräver att både klient och server har SSL-certifikat installerade. Som standard är SSL inte konfigurerad för MySQL.
Följ dessa steg för att konfigurera SSL för MySQL-serverinstans.
För att skapa en användare med SSL-aktiverad kan du använda alternativet KRÄV SSL medan du skapar användaren.
CREATE USER 'user-with-ssl'@'localhost' REQUIRE SSL;
På samma sätt skulle skapande med X509 förvänta sig att klienten / användaren skulle ansluta för att ha ett giltigt X509-certifikat.
>> Se här för att förstå mer om X509.
För att skapa en användare med ett X509-certifikat, använd nedanstående fråga:
CREATE USER 'user-with-x509'@'localhost' REQUIRE X509;
SKAPA ANVÄNDARE Med lösenordshanteringsalternativ
Lösenordsalternativ används för att ställa in policy för lösenordet medan du skapar en användare med kommandot CREATE USER.
# 1) Förfalla lösenordet vid inloggning. Lösenordet har upphört att gälla efter första användningen och uppmanar användarna att ändra lösenordet.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE;
#två) Upphör lösenordet efter ett fast intervall. Lösenordets utgång kan konfigureras med det konfigurerade intervallet, till exempel, 90 dagar.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE INTERVAL 90 DAY;
# 3) Lösenordet låses efter konfigurerade försök igen. Många gånger är det önskvärt att användarkontot låses (under en konfigurerad period) efter 'n' felaktiga försök på nytt. I frågan nedan låses användarkontot i två dagar efter 5 felaktiga försök.
CREATE USER 'test'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Password' FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 2;
# 4) Nytt lösenord bör inte vara detsamma som konfigurerade tidigare lösenord.
I frågan nedan bör det nya lösenordet som användarna ställer inte vara detsamma som de senaste två lösenorden.
CREATE USER IF NOT EXISTS 'test'@'localhost' IDENTIFIED BY 'Password' PASSWORD EXPIRE PASSWORD HISTORY 2;
SKAPA ANVÄNDARE med resursbegränsningsalternativ
Resursbegränsningar krävs särskilt för produktion av MySQL-instanser för att undvika att databasen överväldigas av frågor / förfrågningar från en enskild användare och som kan påverka MySQL-serverns prestanda.
Vi kan ställa in resursgränserna genom att använda valfri 3 av dessa alternativ nedan:
# 1) MAX_QUERIES_PER_HOUR - Antal tillåtna sökfrågor för en given användare per timme.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_QUERIES_PER_HOUR 5
Antag att om användaren försöker överstiga mer än fem frågor per timme skulle MySQL-servern kasta ett fel som nedan:
ERROR 1226 (42000): User 'user-with-resource-limits' has exceeded the 'max_questions' resource (current value: 5)
# 2) MAX_UPDATES_PER_HOUR - Antal uppdateringsfrågor som tillåts för en given användare per timme.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 50
# 3) MAX_CONNECTIONS_PER_HOUR - Antalet gånger som ett konto kan ansluta till servern per timme.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 50
# 4) MAX_USER_CONNECTIONS - Antalet samtidiga anslutningar till MySQL-serverinstansen från den givna användaren.
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_USER_CONNECTIONS 50
Observera att alla ovanstående alternativ också kan kombineras när du skapar en användare. Antag att om vi vill ange MAX_QUERIES som 10 och MAX_UPDATES som 100, kan vi ha en enda CREATE_USER-fråga som:
CREATE USER 'user-with-resource-limits'@'localhost' WITH MAX_UPDATES_PER_HOUR 100 MAX_QUERIES_PER_HOUR 10
MySQL uppdaterar och tar bort användare
MySQL tillhandahåller två viktiga kommandon - ALTER USER och DROP USER för att ändra respektive ta bort befintliga användare. Låt oss förstå båda dessa med hjälp av exempel.
ALTER ANVÄNDARE
MySQL ALTER USER används för att uppdatera / ändra befintliga MySQL-användarkonton. Det kan användas för att,
- Uppdatera resursgränser
- Ställ in alternativ för lösenord
- Lås och låsa upp konton etc.
Låt oss se ett exempel på hur ALTER USER används för att låsa upp ett låst konto.
Skapa en användare i ett låst tillstånd och lås sedan upp den med ALTER USER-kommandot.
CREATE USER 'test'@'localhost'I DENTIFIED BY 'Password' ACCOUNT LOCK;
Nu när vi loggar in med den här användaren får vi ett konto låst meddelande (eftersom användaren skapades i ett låst kontotillstånd).
$ /usr/local/mysql/bin/mysql -u test -p Enter password: ERROR 3118 (HY000): Access denied for user 'test'@'localhost'. Account is locked.
Använd frågan nedan för att låsa upp användaren med ALTER-kommandot.
ALTER USER 'test'@'localhost' ACCOUNT UNLOCK
Logga in med användaren 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 ANVÄNDARE
MySQL DROP USER-kommandot tar bort en eller flera befintliga användare och alla tillhörande behörigheter och bidrag.
Observera att det inte tar bort / raderar data som har infogats / tabeller som skapats eller uppdaterats av användaren och som tas bort.
Om någon försöker ta bort en icke-befintlig användare skulle kommandot DROP USER orsaka ett fel.
Låt oss skapa en användare och radera den med kommandot DROP:
CREATE USER 'test'@'localhost'; DROP USER 'test'@'localhost';
Vanliga frågor
F # 1) Vad är en användare i MySQL?
Svar: Användare i MySQL är ett konto / enhet som kan logga in på MySQL-serverinstansen och utföra olika åtgärder. En användare kan tilldelas rollbaserad åtkomst eller detaljerad åtkomst till en eller flera databaser och / eller tabeller.
F # 2) Hur kontrollerar jag olika användare som är anslutna till MySQL?
Svar: För att se de aktiva användarsessionerna på en MySQL-serverinstans kan du köra kommandot processlist enligt nedan.
SHOW processlist;
Utdata från detta kommando skulle visa olika attribut för den aktiva användarens sessioner anslutna vid tidpunkten för kommandokörning.
Provutdata nedan:
F # 3) Hur byter jag användare i MySQL?
Svar: MySQL arbetar med begreppet användarsessioner. När du är inloggad med en viss användare kan du antingen planera att avsluta sessionen eller öppna en session mot en ny användare i ett nytt fönster eller som en ny anslutning i MySQL GUI-klienter som en arbetsbänk.
För att logga in med en viss användare från mysql-klienten kan du använda nedanstående syntax:
mysql -u {userName} -p
När du har skrivit ovanstående kommando, när du trycker på Enter, uppmanas du att ange lösenordet för användaren som anges i fältet {userName}. När lösenordet har validerats kommer du till MySQL-skal / kommandotolken.
För att logga in med en separat användare, Du kan avsluta den aktuella sessionen genom att ange exit-kommandot och logga in på nytt med en annan användare.
mysql> exit
Det är också möjligt att ha flera anslutningar till MySQL-serverinstanser för olika användare. Du kan helt enkelt öppna en ny flik / ett fönster för kommandotolken och använda samma kommando för att logga in med en annan användare.
mysql -u {userName2} -p
F # 4) Hur gör jag en MySQL-användare skrivskyddad?
Svar: MySQL tillhandahåller en uttömmande mekanism för att ge detaljerad åtkomst till databaser eller tabeller. Du kan tillhandahålla olika typer av åtkomst som SELECT, UPDATE, INSERT, etc till en eller flera databaser eller tabeller.
För att bara ge skrivskyddad åtkomst till en användare kan du ge SELECT åtkomst till en databas (med * för alla tabeller eller uttryckligen nämna tabellnamn enligt krav)
Låt oss förstå detta med hjälp av ett exempel nedan:
Vi skapar en användare med namnet 'readaccess' med lösenord som 'Password'
create user 'readaccess'@'localhost' IDENTIFIED BY 'Password'
Ge nu läsåtkomst till alla tabeller i en databas med namnet “test” med hjälp av nyckelordet GRANT i MySQL
grant select on test.* to 'readaccess'@'localhost'
För att validera åtkomsten kan du nu logga in med den här användaren som heter 'readaccess' och försöka fråga tabellerna i databasens 'test'.
Men om du försöker infoga data till någon av tabellerna i testdatabasen, skulle du få ett åtkomst nekat fel eftersom vi uttryckligen just har beviljat läsbehörighet till den här användaren.
F # 5) Hur ser jag användare i MySQL?
Svar: MySQL har en systemnivå-tabell med namnet 'mysql.user' som innehåller en lista över alla användare som har skapats för MySQL-serverinstansen. Behörigheterna till denna tabell är vanligtvis begränsade till root- eller admin-användare eller någon som hanterar autentisering och auktorisering för MySQL-serverinstansen.
F # 6) Hur hittar jag MySQL-användarnamn och lösenord?
Svar: MySQL-användar- och lösenordsmappningen lagras i systemtabellen ”mysql.user”, som är en åtkomstbegränsad tabell. Lösenordet lagras i krypterat format beroende på det krypteringsläge som valdes under användarskapandet.
Men om någons konto är låst tillhandahåller MySQL ett annat kommando som heter ALTER USER, vilket kan användas för att låsa upp ett visst användarkonto.
Slutsats
I den här handledningen lärde vi oss kommandot MySQL CREATE USER, som används för autentisering och åtkomsthantering i allmänhet av databasadministratörer.
MySQL tillhandahåller många kraftfulla autentiseringsmekanismer och rollbaserade uppdrag som gör att nya användare kan skapas med fördefinierade åtkomstbidrag. Vi såg också exempel för att skapa användare med olika behörighetsmekanismer, olika lösenordsinställningar, utgångsalternativ etc.
Rekommenderad läsning
- Hur man laddar ner MySQL för Windows och Mac
- MySQL Skapa vyhandledning med kodexempel
- MySQL Skapa tabellhandledning med exempel
- 31 Top Database Testing Intervjufrågor och svar
- Databas Normalisering Handledning: 1NF 2NF 3NF BCNF Exempel
- Komplett guide för databastestning (varför, vad och hur man testar data)
- MongoDB Skapa säkerhetskopia av databas
- MongoDB Skapa användare och tilldela roller med exempel