Не все любят управлять MySQL через Linux. Management Studio – говорили они. CLI – говорим мы. Бро, эта статья про то, как дать права доступа (permissions) учетным записям в Linux – среде.
Логинимся
Подключаемся к своему серверу по SSH. В командной строке вводим:
mysql -u root -p
Хоп – и мы уже в режиме управления MySQL:
mysql>
Вообще, эта статья про права доступа. Но на всякий случай вот тебе синтаксис команды, которая позволит создать нового пользователя с паролем в MySQL:
CREATE USER 'логин'@'localhost' IDENTIFIED BY 'пароль';
А теперь права
Друже, синтаксис команды, которая даст нужные тебе права крайне простой. Вот он:
GRANT права ON база_данных.таблица TO 'логин'@'localhost';
Разберемся слева на право:
- права - могут быть следующие:
- ALL – дает полный доступ к базе данных. Кстати, если база данных не определена в команде, то даст полный доступ ко всему в MySQL (ох не надо так);
- CREATE – позволяет пользователю создавать базы данных и таблицы;
- DELETE – дает право пользователю удалять строки из таблиц;
- DROP – дает право удалять базы данных и таблица целиком (ну, так тоже не надо);
- EXECUTE – дает право пользователю выполнять хранимые процедуры;
- GRANT OPTION – с этой опцией юзер сможет давать права (или удалять) другим пользователям;
- INSERT – дает право хранить молчанию и все что он скажет будет.. Ладно, это просто право на добавление новых строк в таблицу;
- SELECT – самое распространенное право – парсить (извлекать) данные из SQL для чтения;
- SHOW DATABASES - этому пользователю можно будет смотреть на список баз данных;
- UPDATE – дает право пользователю изменять текущие строки в таблице;
- база_данных собственно, база данных, внутри которой живет ваша таблица;
- таблица - сама таблица. Табличка, table, le tableau;
- логин - имя пользователя вашего юзверя;
Все просто. Пробежимся по примерам.
Пример №1
Давайте дадим права юзеру example, с помощью которых он сможет создавать любые БД и таблицы:
GRANT CREATE ON *.* TO 'example'@'localhost';
Использование звездочки (*) – это как маска, под которое попадает все.
Пример №2
Дадим пользователю example права на удаление любых таблиц в заранее обозначенной базе данных, которая называется easybro
GRANT DROP ON easybro.* TO 'example'@'localhost';
Как видишь, мы юзаем команду DROP. Кстати, лучшая практика после внесения изменения сделать небольшую перезагрузку прав командой:
FLUSH PRIVILEGES;
Как посмотреть права определенного пользователя в MySQL
Посмотреть права очень просто. Опять же, на примере нашего юзера example:
SHOW GRANTS FOR 'example'@'localhost';