Самый легкий способ создать нового пользователя в 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