Låt oss se hur man beviljar behörigheter (kallade privilegier) till en användare av MySQL-databasen
Som standard när du skapar en ny MySQL-användare med syntaxen
CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
användaren kan inte göra mycket. Vi kan säga att det inte kan göra någonting, faktiskt.
Den kan inte läsa data från någon befintlig databas, än mindre modifiera data. Och den kan inte ens skapa en ny databas.
För att få en användare att göra vad som helst måste du ge privilegier till det.
Du kan göra det med GRANT
kommando.
Vi kan använda GRANT <permission>
, med hjälp av följande behörighetssökord:
CREATE
DROP
DELETE
INSERT
SELECT
UPDATE
ALL PRIVILEGES
Ge privilegium att skapa nya databaser till en användare
GRANT CREATE ON *.* TO '<username>'@'localhost';
Ge privilegier till en användare att skapa nya tabeller i en specifik databas
GRANT CREATE ON <database>.* TO '<username>'@'localhost';
Ge behörighet att läsa (fråga) en specifik databas till en användare
GRANT SELECT ON <database>.* TO '<username>'@'localhost';
Ge privilegium att läsa en specifik databas tabell till en användare
GRANT SELECT ON <database>.<table> TO '<username>'@'localhost';
Ge privilegium att infoga, uppdatera och ta bort rader i en specifik databas till en användare
GRANT INSERT, UPDATE, DELETE ON <database>.* TO '<username>'@'localhost';
Ge behörighet att ta bort tabeller i en specifik databas till en användare
GRANT DROP ON <database>.* TO '<username>'@'localhost';
Ge behörighet att ta bort databaser till en användare
GRANT DROP ON *.* TO '<username>'@'localhost';
Ge all behörighet på en specifik databas till en användare
GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'localhost';
Ge alla privilegier till en användare
GRANT ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Återkalla en behörighet
Exempel för att återkalla DROP
privilegium på <database>
:
REVOKE DROP ON <database>.* TO '<username>'@'localhost';
För att återkalla alla privilegier, kör:
REVOKE ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Du kan visualisera privilegierna för en enskild användare genom att köra:
SHOW GRANTS FOR '<username>'@'localhost';