sql >> Databasteknik >  >> RDS >> Mysql

MySQL användarbehörigheter

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';

  1. Hur kan jag förhindra SQL-injektion i PHP?

  2. Vilken joinsyntax är bättre?

  3. Vertikalt skalande PostgreSQL

  4. Kan databasposter som lagts till från objekt raderas med knappen?