Video: MySQL: Understanding Security 2025
Når MySQL er installeret, opretter den automatisk en database kaldet mysql . Alle oplysninger, der bruges til at beskytte dine data, gemmes i denne database, herunder kontonavne, værtsnavne, adgangskoder og privilegier.
Privilegier gemmes i kolonner. Formatet for hvert kolonnens navn er privilegium _priv, hvor privilegium er et specifikt konto privilegium. For eksempel hedder kolonnen indeholdende ALTER privilegier alter_priv. Værdien i hver privilegiumsøjle er Y eller N, hvilket betyder ja eller nej.
Så i brugertabellen vil der f.eks. Være en række for en konto og en kolonne for alter_priv. Hvis kontofeltet for alter_priv indeholder Y, kan kontoen bruges til at udføre en ALTER-erklæring. Hvis alter_priv indeholder N, har kontoen ikke privilegium til at udføre en ALTER-erklæring.
Mysql-databasen indeholder følgende tabeller, der lagrer privilegier:
-
bruger tabel: Denne tabel lagrer privilegier, der gælder for alle databaser og tabeller. Den indeholder en række for hver gyldig konto, der indeholder kolonnens brugernavn, værtsnavn og adgangskode. MySQL-serveren afviser en forbindelse til en konto, der ikke findes i denne tabel.
-
db tabel: Denne tabel lagrer privilegier, der gælder for en bestemt database. Den indeholder en række til databasen, som giver privilegier til et kontonavn og et værtsnavn. Kontoen skal eksistere i brugertabellen for de privilegier, der skal gives. Privilegier, der er angivet i brugerbordet, overgår privilegier i denne tabel.
Hvis brugertabellen f.eks. Har en række til kontoformgiveren, der giver INSERT-privilegier, kan designeren indsætte i alle databaserne. Hvis en række i db-tabellen viser N for INSERT for designerkontoen i PetCatalog-databasen, overgår brugertabellen den, og designeren kan indsætte i PetCatalog-databasen.
-
vært tabel: Denne tabel styrer adgang til en database, afhængigt af værten. Værtsbordet arbejder med db-tabellen. Hvis en række i db-tabellen har et tomt felt for værten, kontrollerer MySQL værttabellen for at se, om db'en har en række der. På denne måde kan du tillade adgang til en db fra nogle værter, men ikke fra andre.
Antag f.eks. At du har to databaser: db1 og db2. Databasen db1 har følsomme oplysninger, så du vil kun have visse personer til at se det. DB2-databasen har oplysninger, som du vil have alle til at se. Hvis du har en række i db-tabellen til db1 med et tomt værtsfelt, kan du have to rækker for db1 i værttabellen.
En række kan give alle rettigheder til brugere, der forbinder fra en bestemt vært, mens en anden række kan nægte privilegier til brugere, der forbinder fra en anden vært.
-
tables_priv table: Denne tabel lagrer privilegier, der gælder for specifikke tabeller.
-
columns_priv table: Denne tabel lagrer privilegier, der gælder for specifikke kolonner.
Du kan se og ændre tabellerne i mysql direkte, hvis du bruger en konto, der har de nødvendige privilegier. Du kan bruge SQL-forespørgsler som SELECT, INSERT og UPDATE. Hvis du har adgang til MySQL via din arbejdsgiver, en klient eller et webhostingfirma, har du sandsynligvis ikke en konto med de nødvendige privilegier.