Så här skapar du en offentlig användare i MySQL som kräver ett lösenord för att se en databas, tillsammans med förklaringar och bästa praxis:
1. Anslut till MySQL som root eller en administratörsanvändare
Du måste ansluta till din MySQL -server med ett användarkonto som har tillräckliga privilegier för att skapa användare och bevilja behörigheter. Vanligtvis är detta "root" -användaren eller en annan administrativ användare.
`` `bash
mysql -u root -p
`` `
Ange rotlösenordet när du uppmanas.
2. Skapa användaren
Använd uttalandet "Skapa användare" för att skapa användaren. Det är bästa praxis att specificera värden från vilken användaren kan ansluta. Om du vill att användaren ska ansluta från någon värd, använd `%`. Var mycket försiktig med att använda `%` för känsliga konton! För ett säkrare tillvägagångssätt, begränsa användaren att endast ansluta från specifika IP -adresser eller värdnamn.
`` `SQL
Skapa användare 'public_user'@'%' identifierad av 'Your_strong_Password';
`` `
* `'public_user'@'%'` :Detta definierar användarnamnet (`public_user ') och värden (`%' betyder någon värd). Byt ut `your_strong_password` med ett starkt, unikt lösenord.
* `Identifierad av 'Your_strong_Password'` :Detta ställer in lösenordet för användaren. Använd ett starkt lösenord som är långt, komplicerat och innehåller en blandning av versaler och små bokstäver, siffror och symboler. Överväg att använda en lösenordshanterare för att generera och lagra dina lösenord säkert.
Viktig säkerhetsanmärkning: Med hjälp av `'%' 'som värden tillåter användaren att ansluta från * valfri * IP -adress. Detta kan vara en säkerhetsrisk. Om möjligt, begränsa användaren till en specifik IP -adress eller utbud av IP -adresser. Till exempel:
`` `SQL
Skapa användare 'public_user'@'192.168.1.100' identifierad av 'Your_strong_Password'; - Tillåt endast från IP 192.168.1.100
Skapa användare 'public_user'@'192.168.1.%' Identifierad av 'Your_strong_Password'; - Tillåt från Subnet 192.168.1.x
`` `
3. Bevilja skrivskyddade privilegier till databasen
Använd uttalandet "Grant" för att bevilja användarens skrivbara behörigheter i den önskade databasen.
`` `SQL
Bevilja välj på din_database.* Till 'public_user'@'%';
`` `
* `Grant Select` :Detta anger att användaren bara kommer att ha "Select" -privilegiet, vilket gör att de kan läsa data. De kommer * inte * att kunna infoga, uppdatera, ta bort eller ändra databasens struktur.
* `på din_database.*` :Detta anger databasen (`your_database ') och att privilegiet gäller för alla tabeller i den databasen ('.*`). Byt ut `your_database` med det faktiska namnet på din databas.
* `till 'public_user'@'%'` :Detta anger den användare som privilegiet beviljas. Se till att detta matchar användaren du skapade i steg 2.
4. Flush -privilegier
Efter att ha beviljat privilegier är det viktigt att spola privilegiet för att säkerställa att ändringarna träder i kraft omedelbart.
`` `SQL
Spolar privilegier;
`` `
5. Testa användaren
Logga ut från rot- eller administratörskontot och logga in med det nyligen skapade "Public_User" -kontot.
`` `bash
mysql -u public_user -p -h your_mysql_server_address
`` `
Byt ut `your_mysql_server_address` med den faktiska adressen till din MySQL -server. Om du ansluter från samma maskin kan du ofta använda "localhost".
Ange lösenordet du ställer in för `public_user 'när du uppmanas.
När du är inloggad kan du försöka välja data från databasen:
`` `SQL
Använd din_database;
Välj * från Your_Table;
`` `
Om uttalandet "Select" fungerar har användaren beviljats skrivskyddad åtkomst. Prova en operation som kräver andra privilegier, till exempel `Insert ',` `` update update `,` Delete` eller `Create Tabell`. Dessa bör misslyckas med ett "tillstånd nekat" -fel.
Komplett exempel:
`` `SQL
-Anslut som root:mysql -u root -p
- Skapa användaren (ersätt med ett starkt lösenord!)
Skapa användare 'public_user'@'%' identifierad av 'SuperSecretPassword123!';
-GIVERA skrivskyddad åtkomst till databasen "MyDatabase"
GRANT Välj på MyDatabase.* Till 'public_user'@'%';
- Uppdatera privilegier
Spolar privilegier;
- Avsluta rotesessionen
UTGÅNG;
- Logga in som den nya användaren (från kommandoraden):
-mysql -u public_user -p -h your_mysql_server_address
- Testa behörigheterna:
Använd MyDatabase;
Välj * från kunder; - bör fungera
Infoga i kunder (namn) ('ny kund'); - bör misslyckas
- Avsluta Public_user-sessionen
UTGÅNG;
`` `
Viktiga överväganden och bästa praxis:
* minst privilegium: Bevilja endast nödvändiga privilegier. Undvik att bevilja bredare privilegier än vad som krävs. Till exempel, om användaren bara behöver läsa från en specifik tabell, bevilja "välj" endast på den tabellen, inte hela databasen.
* Värdbegränsning: Begränsa värdarna från vilka användaren kan ansluta. Använd inte `'%' 'om inte absolut nödvändigt och du förstår säkerhetskonsekvenserna.
* Lösenordshantering: Tvinga starka lösenordspolicyer och rotera regelbundet lösenord. Använd en lösenordshanterare.
* revisionsloggning: Aktivera revisionsloggning på din MySQL -server för att spåra användaraktivitet, inklusive inloggningar, frågor och andra operationer. Detta kan hjälpa dig att upptäcka och undersöka säkerhetsincidenter.
* Regelbundna säkerhetsrevisioner: Granska regelbundet din MySQL -konfiguration, användarkonton och privilegier för att identifiera och hantera potentiella säkerhetssårbarheter.
* kryptering: Använd kryptering för att skydda data i vila och under transitering. Aktivera SSL för klientanslutningar.
* brandvägg: Konfigurera din brandvägg för att endast tillåta nödvändig trafik till din MySQL -server.
* Övervakning: Övervaka din MySQL -server för prestationsproblem och säkerhetshot.
* databasdesign: Designa din databas med säkerhet i åtanke. Använd lämpliga datatyper och begränsningar för att förhindra attacker av datakorruption och injektion. Överväg att använda förberedda uttalanden för att förhindra SQL -injektion.
* Undvik att utsätta direkt för Internet: I de flesta fall bör du * inte * direkt utsätta din MySQL -databas för det offentliga internet. Använd istället en applikationsserver (t.ex. en webbserver som kör PHP, Python, Node.js, etc.) för att hantera förfrågningar från klienter och interagera med databasen på användarens vägnar. Detta gör att du kan implementera strängare säkerhetskontroller och skydda databasen från direkta attacker. Detta är avgörande för att förhindra obehöriga åtkomst och dataöverträdelser.
* Ingen direkt exponering för slutanvändaren: Låt aldrig slutanvändaren mata in direkt i din databas, använd istället en webbplats.
Genom att följa dessa steg och bästa metoder kan du skapa en offentlig användare som kräver ett lösenord för att visa data i MySQL samtidigt som du upprätthåller en rimlig säkerhetsnivå. Kom ihåg att anpassa dessa instruktioner till din specifika miljö och säkerhetskrav. Prioritera alltid säkerheten och granska regelbundet din konfiguration för att säkerställa att den förblir effektiv.