Как создать пользователя и дать ему права в MySQL

как создать пользователя и дать ему привилегии в MySQL

Самый легкий способ создать нового пользователя в MySQL - установить phpmyadmin. Для тех, кто не знает phpmyadmin - это такая удобная тулза для управления MySQL базами данных, создания пользователей, управления привилегиями и т.д. Если не хочется запоминать команды, а ткнуть пару кнопок и получить результат, то держите путь на phpmyadmin.net.

Ну а я продолжу эту статью для консольных маньяков :), шучу. Продолжу писать статью дальше для тех, кто хочет знать что происходит внутри, так сказать под капотом, ибо все эти команды итак выполняются phpmyadmin-ом.

Создание пользователя через MySQL shell:

Имейте в виду сейчас мы просто создадим нового пользователя без никаких привилегии.

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Пользователь был создан, но у него нет привилегии и от его имени ничего нельзя выполнить. Точнее даже авторизоваться не получится. Все из-за отсутствия привилегии.

Дать привилегию для нового пользователя MySQL.

OK, даем привилегию для созданного пользователя:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

Эта команда даст новому пользователю возможность чтения, редактирования, добавления и выполнения команд во всех базах данных и таблицах.

Теперь нужно обновить все привилегии.

FLUSH PRIVILEGES;

Имейте в виду, что эту команду нужно всегда выполнять после изменения каких-либо привилегии.

Как дать пользователю права на определенную базу/таблицу

Ответом на это может послужить следующее пояснение кода, выполненного чуть выше:

GRANT [тип привилегии] ON [название БД].[название таблицы] TO '[пользователь]'@'localhost';

Приведем еще один пример. Допустим нужно дать права юзеру 'newuser' только к базе данных 'wordpress':

GRANT ALL PRIVILEGES ON wordpress.* TO 'newuser'@'localhost';

Теперь думаю стало понятно почему в примере, где дали доступ ко-всем базам данных и таблицам в них был поставлен символ *

Привилегии в MySQL

Во всех предыдущих примерах юзеру предоставлялись все привилегии, но иногда может возникнуть ситуация, когда нужно дать доступ только на чтение, например. Следующая сводка привилегии поможет вам в таких ситуациях:

  • ALL PRIVILEGES - дает пользователю все права
  • CREATE - позволяет пользователю право создавать новые таблицы или базы данных
  • DROP - позволяет удалять таблицы или базы данных
  • DELETE - позволяет удалять информацию в таблицах
  • INSERT - позволяет вставлять или записывать новую информацию в таблицы
  • SELECT - позволяет выполнить команду SELECT, что позволит читать информацию с таблиц
  • UPDATE - эта привилегия позволит обновлять информацию в таблицах
  • GRANT OPTION - позволяет давать или удалять привилегии у других пользователей

Как удалить привилегию

Уже ясно как даются привилегии пользователю в MySQL, а как насчет удаления?

REVOKE [тип привилегии] ON [название БД].[название таблицы] TO '[username]'@'localhost';

Как видите синтаксис практически идентичен команде GRANT.

Как удалить пользователя в MySQL

Представим, что нового юзера нужно удалить. Синтаксис команды удаления еще проще и короче:

DROP USER 'newuser'@'localhost';

После того, как закончили со всем нужно выйти с MySQL shell, выполнив команду

quit