Нека видим как да предоставим разрешения (наречени привилегии) на потребител на базата данни MySQL
По подразбиране, когато създавате нов потребител на MySQL, използвайки синтаксиса
CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
потребителят не може да направи много. Можем да кажем, че всъщност не може за нищо.
Той не може да чете данни от съществуваща база данни, камо ли да променя данните. И дори не може да създаде нова база данни.
За да накарате потребителя да прави каквото и да е, трябва да предоставите привилегии към него.
Можете да направите това с помощта на GRANT
команда.
Можем да използваме GRANT <permission>
, като използвате следните ключови думи за разрешение:
CREATE
DROP
DELETE
INSERT
SELECT
UPDATE
ALL PRIVILEGES
Дайте привилегия за създаване на нови бази данни на потребител
GRANT CREATE ON *.* TO '<username>'@'localhost';
Дайте привилегии на потребител да създава нови таблици в конкретна база данни
GRANT CREATE ON <database>.* TO '<username>'@'localhost';
Дайте привилегия за четене (заявка) на конкретна база данни на потребител
GRANT SELECT ON <database>.* TO '<username>'@'localhost';
Дайте привилегия за четене на конкретна таблица от база данни на потребител
GRANT SELECT ON <database>.<table> TO '<username>'@'localhost';
Дайте привилегия за вмъкване, актуализиране и изтриване на редове в конкретна база данни на потребител
GRANT INSERT, UPDATE, DELETE ON <database>.* TO '<username>'@'localhost';
Дайте привилегия за изтриване на таблици в конкретна база данни на потребител
GRANT DROP ON <database>.* TO '<username>'@'localhost';
Дайте привилегия за изтриване на бази данни на потребител
GRANT DROP ON *.* TO '<username>'@'localhost';
Дайте всички привилегии на конкретна база данни на потребител
GRANT ALL PRIVILEGES ON <database>.* TO '<username>'@'localhost';
Дайте всички привилегии на потребител
GRANT ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Оттегляне на привилегия
Пример за отмяна на DROP
привилегия на <database>
:
REVOKE DROP ON <database>.* TO '<username>'@'localhost';
За да отмените всички привилегии, изпълнете:
REVOKE ALL PRIVILEGES ON *.* TO '<username>'@'localhost';
Можете да визуализирате привилегиите на един потребител, като изпълните:
SHOW GRANTS FOR '<username>'@'localhost';