Video: MySQL: Understanding Security 2024
När MySQL är installerat skapas det automatiskt en databas som heter mysql . All information som används för att skydda dina data lagras i den här databasen, inklusive kontonamn, värdnamn, lösenord och behörigheter.
Privilegier lagras i kolumner. Formatet för varje kolumnnamn är privilegium _priv, där privilegium är ett specifikt konto privilegium. Till exempel heter kolumnen som innehåller ALTER-privilegier alter_priv. Värdet i varje privilegikolonn är Y eller N, vilket betyder ja eller nej.
Så, till exempel i användartabellen, skulle det finnas en rad för ett konto och en kolumn för alter_priv. Om kontofältet för alter_priv innehåller Y kan kontot användas för att utföra ett ALTER-uttalande. Om alter_priv innehåller N har kontot inte behörighet att utföra ett ALTER-uttalande.
Mysql-databasen innehåller följande tabeller som lagrar behörigheter:
-
användare tabell: I tabellen lagras privilegier som gäller för alla databaser och tabeller. Den innehåller en rad för varje giltigt konto som innehåller kolumnerna användarnamn, värdnamn och lösenord. MySQL-servern avvisar en anslutning för ett konto som inte existerar i den här tabellen.
-
db tabell: I tabellen lagras privilegier som gäller för en viss databas. Den innehåller en rad för databasen, som ger behörigheter till ett kontonamn och ett värdnamn. Kontot måste finnas i användartabellen för de privilegier som ska beviljas. Privilegier som anges i användartabellen överrätta behörigheter i den här tabellen.
Till exempel, om användartabellen har en rad för kontonformgivaren som ger INSERT-privilegier, kan formgivaren infoga i alla databaser. Om en rad i db-tabellen visar N för INSERT för designerkontot i PetCatalog-databasen övergår användartabellen, och designern kan infoga i PetCatalog-databasen.
-
värd tabell: Den här tabellen styr åtkomst till en databas, beroende på värd. Värdtabellen fungerar med db-tabellen. Om en rad i db-tabellen har ett tomt fält för värden kontrollerar MySQL värddatabasen för att se om db har en rad där. På så sätt kan du tillåta åtkomst till en DB från vissa värdar men inte från andra.
Antag att du har två databaser: db1 och db2. Databasen db1 har känslig information, så du vill bara ha vissa personer att se den. DB2-databasen har information som du vill att alla ska se. Om du har en rad i db-tabellen för db1 med ett tomt värdfält kan du ha två rader för db1 i värdtabellen.
En rad kan ge alla behörigheter till användare som ansluter från en viss värd, medan en annan rad kan neka privilegier för användare som ansluter från någon annan värd.
-
tables_priv table: I tabellen lagras privilegier som gäller för specifika tabeller.
-
columns_priv tabell: I tabellen lagras privilegier som gäller för specifika kolumner.
Du kan se och ändra tabellerna i mysql direkt om du använder ett konto som har nödvändiga behörigheter. Du kan använda SQL-frågor som SELECT, INSERT och UPDATE. Om du använder MySQL via din arbetsgivare, en klient eller ett webbhotell, har du förmodligen inte ett konto med nödvändiga privilegier.