Video: MySQL: Understanding Security 2025
Når MySQL er installert, oppretter den automatisk en database kalt mysql . All informasjon som brukes til å beskytte dataene dine, lagres i denne databasen, inkludert kontonavn, vertsnavn, passord og privilegier.
Privilegier lagres i kolonner. Formatet til hvert kolonneavn er privilegium _priv, der privilegium er et spesifikt konto-privilegium. For eksempel er kolonnen som inneholder ALTER-privilegier navngitt alter_priv. Verdien i hver privilegiumskolonne er Y eller N, noe som betyr ja eller nei.
Så, for eksempel i brukertabellen, ville det være en rad for en konto og en kolonne for alter_priv. Hvis kontofeltet for alter_priv inneholder Y, kan kontoen brukes til å utføre en ALTER-setning. Hvis alter_priv inneholder N, har kontoen ikke privilegium til å utføre en ALTER-setning.
Mysql-databasen inneholder følgende tabeller som lagrer privilegier:
-
bruker tabell: Denne tabellen lagrer privilegier som gjelder for alle databaser og tabeller. Den inneholder en rad for hver gyldig konto som inneholder kolonnens brukernavn, vertsnavn og passord. MySQL-serveren avviser en tilkobling for en konto som ikke finnes i denne tabellen.
-
db tabell: Denne tabellen lagrer privilegier som gjelder for en bestemt database. Den inneholder en rad for databasen, som gir privilegier til et kontonavn og et vertsnavn. Kontoen må eksistere i brukertabellen for de privilegiene som skal gis. Privilegier som er oppgitt i brukerbordet overstyrer privilegier i denne tabellen.
For eksempel, hvis brukertabellen har en rad for kontoformgiveren som gir INSERT-privilegier, kan designeren sette inn i alle databasene. Hvis en rad i db-tabellen viser N for INSERT for designerkontoen i PetCatalog-databasen, overstyrer brukertabellen den, og designeren kan sette inn i PetCatalog-databasen.
-
vert tabell: Denne tabellen styrer tilgang til en database, avhengig av verten. Vertsbordet fungerer med db-tabellen. Hvis en rad i db-tabellen har et tomt felt for verten, sjekker MySQL verten tabellen for å se om db har en rad der. På denne måten kan du tillate tilgang til en db fra noen verter, men ikke fra andre.
For eksempel, anta at du har to databaser: db1 og db2. Databasen db1 har sensitiv informasjon, så du vil bare at enkelte mennesker skal se den. DB2-databasen har informasjon som du vil at alle skal se. Hvis du har en rad i db-tabellen for db1 med et tomt vertsfelt, kan du ha to rader for db1 i vertsbordet.
En rad kan gi alle privilegier til brukere som kobler fra en bestemt vert, mens en annen rad kan nekte privilegier til brukere som kobler fra noen annen vert.
-
tables_priv table: Denne tabellen lagrer privilegier som gjelder for bestemte tabeller.
-
columns_priv table: Denne tabellen lagrer privilegier som gjelder for bestemte kolonner.
Du kan se og endre tabellene i mysql direkte hvis du bruker en konto som har de nødvendige privilegiene. Du kan bruke SQL-spørringer som SELECT, INSERT og UPDATE. Hvis du har tilgang til MySQL via din arbeidsgiver, en klient eller et webverten, har du sannsynligvis ikke en konto med de nødvendige privilegiene.
