MariaDB-grants forklaret: Alle privilegier

En komplet oversigt over alle MariaDB-privilegier — fra SELECT til SUPER — og hvad hvert privilegium giver dig lov til at gøre.


MariaDB-grants forklaret: Alle privilegier, og hvad de tillader

MariaDB styrer, hvad en bruger må, gennem privilegier, som tildeles med GRANT-kommandoen og fjernes med REVOKE. At forstå præcis, hvad hvert privilegium tillader, er afgørende for at holde dine databaser sikre: Den gyldne regel er kun at give hver bruger de privilegier, vedkommende faktisk har brug for (princippet om færrest mulige rettigheder).

Sådan fungerer grants

Et privilegium i MariaDB kan tildeles på flere niveauer:

Niveau Gælder for Eksempel
Globalt Hele serveren GRANT PROCESS ON *.* TO 'potion'@'localhost';
Database Alle objekter i én database GRANT SELECT ON shop.* TO 'potion'@'localhost';
Tabel En enkelt tabel eller view GRANT INSERT ON shop.orders TO 'potion'@'localhost';
Kolonne Bestemte kolonner i en tabel GRANT SELECT (name, email) ON shop.customers TO 'potion'@'localhost';
Rutine En stored procedure eller funktion GRANT EXECUTE ON PROCEDURE shop.report TO 'potion'@'localhost';

Du kan se en brugers nuværende rettigheder med:

SHOW GRANTS FOR 'potion'@'localhost';

Privilegier træder i kraft med det samme, når de tildeles med GRANT. Hvis du redigerer privilegietabellerne direkte, skal du køre FLUSH PRIVILEGES, før ændringerne slår igennem.

Alle privilegier i overblik

Privilegium Kategori Niveauer Hvad det tillader
SELECT Data Globalt, DB, tabel, kolonne Læse rækker fra tabeller og views. Kræves for enhver forespørgsel, der læser tabeldata.
INSERT Data Globalt, DB, tabel, kolonne Tilføje nye rækker til en tabel med INSERT.
UPDATE Data Globalt, DB, tabel, kolonne Ændre eksisterende rækker med UPDATE.
DELETE Data Globalt, DB, tabel Slette rækker fra en tabel med DELETE.
DELETE HISTORY Data Globalt, DB, tabel Slette historiske rækker fra systemversionerede tabeller med DELETE HISTORY. (10.3.4+)
CREATE Struktur Globalt, DB, tabel Oprette nye databaser og tabeller. På tabelniveau kun netop det tabelnavn.
ALTER Struktur Globalt, DB, tabel Ændre tabelstruktur med ALTER TABLE — tilføje kolonner, ændre typer, omdøbe.
DROP Struktur Globalt, DB, tabel Slette databaser, tabeller og views helt. Kræves også for TRUNCATE TABLE. Destruktivt — tildel med omtanke.
INDEX Struktur Globalt, DB, tabel Oprette og slette indekser med CREATE INDEX / DROP INDEX.
CREATE VIEW Struktur Globalt, DB, tabel Oprette views med CREATE VIEW.
SHOW VIEW Struktur Globalt, DB, tabel Se et views definition med SHOW CREATE VIEW (forespørgsler kræver kun SELECT).
CREATE TEMPORARY TABLES Struktur Globalt, DB Oprette midlertidige tabeller, der kun findes i sessionen og er usynlige for andre brugere.
REFERENCES Struktur Globalt, DB, tabel, kolonne Oprette fremmednøgler, der peger på tabellen.
CREATE TABLESPACE Struktur Globalt Reserveret til tablespace-administration; findes af kompatibilitetshensyn og har ringe praktisk betydning i MariaDB.
CREATE ROUTINE Rutiner & events Globalt, DB Oprette stored procedures og functions.
ALTER ROUTINE Rutiner & events Globalt, DB, rutine Ændre eller slette stored procedures og functions. Den, der opretter en rutine, får det automatisk til den.
EXECUTE Rutiner & events Globalt, DB, rutine Køre stored procedures og functions med CALL eller i forespørgsler.
TRIGGER Rutiner & events Globalt, DB, tabel Oprette og slette triggers på en tabel.
EVENT Rutiner & events Globalt, DB Oprette, ændre og slette planlagte events — MariaDBs indbyggede opgaveplanlægger.
GRANT OPTION Administration Alle niveauer Give egne privilegier videre til andre (WITH GRANT OPTION). Aldrig mere, end brugeren selv har.
CREATE USER Administration Globalt Administrere konti: CREATE USER, DROP USER, RENAME USER, REVOKE ALL PRIVILEGES.
RELOAD Administration Globalt Køre FLUSH-kommandoer (FLUSH PRIVILEGES, FLUSH TABLES, FLUSH LOGS, ...).
PROCESS Administration Globalt Se alle brugeres kørende forespørgsler via SHOW PROCESSLIST. Følsomt — forespørgsler kan indeholde data eller adgangskoder.
SUPER Administration Globalt Bred admin-magt: KILL andres forbindelser, SET GLOBAL, logge på trods max_connections, skrive trods read_only, styre replikering. Delt op i finkornede privilegier fra 10.5.2.
SHUTDOWN Administration Globalt Stoppe serveren med SHUTDOWN eller mariadb-admin shutdown.
FILE Administration Globalt Læse/skrive filer på databaseserveren via LOAD DATA INFILE, SELECT ... INTO OUTFILE, LOAD_FILE(). En klassisk angrebsvektor — tildel sjældent, om overhovedet.
SHOW DATABASES Administration Globalt Se den fulde databaseliste; uden det ses kun databaser, brugeren har privilegier til.
LOCK TABLES Administration Globalt, DB Låse tabeller eksplicit med LOCK TABLES (kræver også SELECT). Bruges af backupværktøjer som mariadb-dump.
USAGE Administration Globalt "Ingen privilegier" — brugeren kan logge på, men intet andet. Alle konti har det implicit.
PROXY Administration Globalt Optræde som en anden konto og overtage dens privilegier. Bruges primært med autentificerings-plugins.
REPLICATION CLIENT / BINLOG MONITOR Replikering Globalt Statuskommandoer som SHOW MASTER STATUS og SHOW BINARY LOGS. Omdøbt til BINLOG MONITOR i 10.5+ (gammelt navn virker som alias).
REPLICATION SLAVE Replikering Globalt Læse replikeringshændelser fra den primære servers binærlog — kræves af replikaens forbindelseskonto.
REPLICATION MASTER ADMIN Replikering Globalt Administrere den primære side: SHOW REPLICA HOSTS, globale variabler for den primære. (10.5.2+)
REPLICATION SLAVE ADMIN Replikering Globalt Administrere replika-siden: START/STOP SLAVE, CHANGE MASTER TO, relaterede variabler. (10.5.2+)
SLAVE MONITOR Replikering Globalt SHOW SLAVE STATUS og SHOW RELAYLOG EVENTS uden fulde admin-rettigheder — nyttigt til overvågning. (10.5.9+)
BINLOG ADMIN Replikering Globalt Administrere selve binærloggen: PURGE BINARY LOGS, binlog-relaterede globale variabler. (10.5.2+)
BINLOG REPLAY Replikering Globalt Afspille binærlog-indhold, f.eks. anvende mariadb-binlog-output med BINLOG-kommandoer. (10.5.2+)
CONNECTION ADMIN SUPER-afløsere Globalt Afbryde andres forbindelser/forespørgsler, logge på ud over max_connections, ændre forbindelsesrelaterede globale variabler. (10.5.2+)
READ_ONLY ADMIN SUPER-afløsere Globalt Skrive til serveren, selv når globalt read_only er slået til. Udeladt af ALL PRIVILEGES fra 10.11. (10.5.2+)
FEDERATED ADMIN SUPER-afløsere Globalt Administrere FEDERATED/FederatedX-servere: CREATE/ALTER/DROP SERVER. (10.5.2+)
SET USER SUPER-afløsere Globalt Sætte DEFINER på views, rutiner, triggers og events til en anden bruger — relevant ved gendannelse af dumps. (10.5.2+)

ALL PRIVILEGES

GRANT ALL PRIVILEGES giver alle privilegier på det valgte niveau, undtagen GRANT OPTION (og fra MariaDB 10.11 også READ_ONLY ADMIN). Et typisk mønster på hostingplatforme er at give en kunde fuld kontrol over sin egen database:

GRANT ALL PRIVILEGES ON kunde_db.* TO 'kunde'@'%';

Det gør brugeren almægtig inden for netop den database, mens administration af hele serveren forbliver utilgængelig.

Praktiske eksempler

En bruger, der kun må læse (f.eks. til rapportering):

CREATE USER 'rapport'@'%' IDENTIFIED BY 'staerk-adgangskode';
GRANT SELECT ON shop.* TO 'rapport'@'%';

En typisk webapplikationsbruger:

CREATE USER 'webapp'@'%' IDENTIFIED BY 'staerk-adgangskode';
GRANT SELECT, INSERT, UPDATE, DELETE ON shop.* TO 'webapp'@'%';

En backup-bruger:

CREATE USER 'backup'@'localhost' IDENTIFIED BY 'staerk-adgangskode';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON *.* TO 'backup'@'localhost';

Fjern et privilegium igen:

REVOKE DELETE ON shop.* FROM 'webapp'@'%';

Opsummering

  • Tildel de færrest mulige privilegier — start med SELECT, INSERT, UPDATE, DELETE til applikationer, og tilføj kun mere, når der er behov.
  • Betragt FILE, SUPER, PROCESS, SHUTDOWN og GRANT OPTION som forbeholdt administratorer.
  • Brug SHOW GRANTS jævnligt til at gennemgå, hvad dine brugere kan.
  • På MariaDB 10.5+ bør du foretrække de finkornede admin-privilegier frem for SUPER.

Guide information

Udgivet
9. juli 2026
Sidst opdateret
25. juli 2026
Visninger
1032