Оглавление
1. Как настроить права доступа на отдельные базы данных в MySQL (MariaDB)
2. Как разрешить пользователю создавать таблицы в базе данных
3. Как разрешить пользователю удалять таблицы в базе данных
4. Как разрешить пользователю удалять записи в таблицах базы данных
5. Как разрешить пользователю добавлять записи в таблицах базы данных
6. Как разрешить пользователю просматривать записи в таблицах базы данных
7. Как разрешить пользователю обновлять записи в таблицах базы данных
8. Как разрешить пользователю изменять структуру таблиц в базе данных
9. Какие ещё существуют привилегии уровня баз данных
10. Как назначить пользователю сразу несколько привилегий на управление базой данных
11. Как назначить пользователю сразу все привилегии по управлению базой данных
12. Как разрешить пользователю передавать привилегии управления базой данных другому пользователю
13. Как проверить текущие привилегии пользователя
Как настроить права доступа на отдельные базы данных в MySQL (MariaDB)
Можно ли в MySQL (MariaDB) разрешить доступ пользователя только к определённым базам данных? Можно ли настроить различные права доступа для баз данных? Ответ на все эти вопросы — да, можно. Именно этому посвящена данная статья.
Все запросы в данной статье будут иметь следующий вид:
GRANT _PRIVILEGE_ ON _TestDB_.* TO '_USERNAME_'@'localhost';
В этом запросе:
- _PRIVILEGE_ - привилегия (право доступа), которую вы хотите предоставить пользователю. Одновременно можно указать несколько привилегий, в этом случае их нужно перечислить через запятую
- _TestDB_ - база данных, на которую вы хотите предоставить привилегии пользователю. Если вместо имени базы данных указать «*» (звёздочку), то предоставленные привилегии будут иметь глобальный уровень, то есть распространяться сразу на все базы данных
- _USERNAME_ - имя пользователя, которому предоставляются привилегии
Примечание: помните, что предоставление одной привилегии может повлечь за собой автоматическое предоставление других привилегий.
При предоставлении пользователю любой привилегии на базу данных, эта база данных становится видимой для пользователя при выполнении запроса
SHOW DATABASES;
Также при предоставлении любой привилегии пользователю по доступу или управлению базой данных, он может выполнять запросы с оператором «USE» в отношении данной базы данных.
Также предоставление привилегий на базу данных разрешает использование запроса:
SHOW TABLES;
Смотрите также:
- Как разрешить доступ пользователю только к определённым таблицам в MySQL (MariaDB)
- Как разрешить доступ пользователю только к определённым столбцам в MySQL (MariaDB)
Как разрешить пользователю создавать таблицы в базе данных
CREATE — разрешает пользователю создавать новые таблицы в базе данных (если выдаётся для одной базы данных), либо разрешает пользователю создавать новые базы данных (если при выдаче привилегии не указана конкретная база данных).
Итак, чтобы разрешить пользователю _USERNAME_ создавать таблицы в базе данных _TestDB_ нужно выполнить следующий запрос:
GRANT CREATE ON _TestDB_.* TO '_USERNAME_'@'localhost';
Как разрешить пользователю удалять таблицы в базе данных
DROP — разрешает пользователю удалять таблицы в базе данных (если выдаётся для одной базы данных), либо разрешает удалять сами базы данных (если при выдаче привилегии не указана конкретная база данных).
Итак, чтобы разрешить пользователю _USERNAME_ удалять таблицы в базе данных _TestDB_ нужно выполнить следующий запрос:
GRANT DROP ON _TestDB_.* TO '_USERNAME_'@'localhost';
Как разрешить пользователю удалять записи в таблицах базы данных
DELETE — разрешает пользователю удалять строки в таблицах.
Итак, чтобы разрешить пользователю _USERNAME_ удалять записи в таблицах базы данных _TestDB_ нужно выполнить следующий запрос:
GRANT DELETE ON _TestDB_.* TO '_USERNAME_'@'localhost';
Как разрешить пользователю добавлять записи в таблицах базы данных
INSERT — разрешает пользователю вставлять новые данные в таблицы.
Итак, чтобы разрешить пользователю _USERNAME_ вставлять новые записи в таблицах базы данных _TestDB_ нужно выполнить следующий запрос:
GRANT INSERT ON _TestDB_.* TO '_USERNAME_'@'localhost';
Как разрешить пользователю просматривать записи в таблицах базы данных
SELECT — разрешает пользователю читать записи в базе данных.
Чтобы разрешить пользователю _USERNAME_ просматривать записи в таблицах базы данных _TestDB_ нужно выполнить следующий запрос:
GRANT SELECT ON _TestDB_.* TO '_USERNAME_'@'localhost';
Как разрешить пользователю обновлять записи в таблицах базы данных
UPDATE — разрешает пользователю обновлять существующие строки базы данных.
Чтобы разрешить пользователю _USERNAME_ обновлять записи в таблицах базы данных _TestDB_ нужно выполнить следующий запрос:
GRANT UPDATE ON _TestDB_.* TO '_USERNAME_'@'localhost';
Как разрешить пользователю изменять структуру таблиц в базе данных
ALTER — разрешает пользователю использовать «ALTER TABLE» для изменения структуры таблицы.
Чтобы разрешить пользователю _USERNAME_ изменять структуру таблиц базы данных _TestDB_ (то есть добавлять и изменять столбцы данных, менять тип данных столбцов), нужно выполнить следующий запрос:
GRANT ALTER ON _TestDB_.* TO '_USERNAME_'@'localhost';
Какие ещё существуют привилегии уровня баз данных
Кроме уже рассмотренных, также существуют следующие привилегии, которые вы можете назначить пользователю на уровне базы данных:
- REFERENCES — разрешает пользователю создавать foreign key
- INDEX — разрешает пользователю включать или удалять индексы
- CREATE VIEW — включает создание или изменение views
Как назначить пользователю сразу несколько привилегий на управление базой данных
Пример команды, которая назначает ряд привилегий пользователю _USERNAME_ над базой данных _TestDB_:
GRANT CREATE, DROP, DELETE, INSERT, SELECT, UPDATE, ALTER, REFERENCES ON _TestDB_.* TO '_USERNAME_'@'localhost';
Как назначить пользователю сразу все привилегии по управлению базой данных
Если вы хотите предоставить пользователю все возможные привилегии на базу данных, то используйте запрос вида (замените _TestDB_ на имя вашей базы данных и замените _USERNAME_ на имя пользователя):
GRANT ALL PRIVILEGES ON _TestDB_.* TO '_USERNAME_'@'localhost';
Как разрешить пользователю передавать привилегии управления базой данных другому пользователю
Если вы хотите дать пользователю возможность передавать его привилегии другим пользователям, то добавьте к запросу «WITH GRANT OPTION».
Например, следующий запрос даёт привилегию SELECT (просмотр) на базу данных _TestDB_ пользователю _USERNAME_ с правом передачи любому другому пользователю:
GRANT SELECT ON _TestDB_.* TO '_USERNAME_'@'localhost'; WITH GRANT OPTION;
А этот запрос даёт все возможные привилегии на базу данных _TestDB_ пользователю _USERNAME_ с правом передачи любому другому пользователю:
GRANT ALL PRIVILEGES ON _TestDB_.* TO '_USERNAME_'@'localhost'; WITH GRANT OPTION;
Как проверить текущие привилегии пользователя
Чтобы проверить, какими привилегиями на чтение и изменение баз данных обладает пользователь выполните следующий запрос (замените _USERNAME_ на имя пользователя):
SHOW GRANTS FOR '_USERNAME_'@'localhost';

